C/C++ FILE 和 fstream 用法详解
FILE 是C语言自带的文件操作结构体, fstream 是C++的文件操作类,两者使用都比较常见,且用法比较类似,再次记录。
功能 | FILE | fstream |
---|---|---|
打开文件 | FILE* fopen(char *path, char *mode) 说明:mode为打开文件的方式,比如以读或写的模式打开文件。 “r” :以只读模式打开文件,文件必须存在,否则报错“w” :写入模式,如果文件不存在,则新建;如果文件存在,则覆盖重写“a” :追加写入模式,与“w”类似,但在已有文件后续写"r+" :以读写模式打开文件,文件必须存在“w+” :以读写模式打开文件,有则重写,无则新建“a+” :读写模式,有则追加,无则新建“b” :以二进制打开文件“t” :文本模式打开文件,默认为该模式 |
fstream fp(char *path, int mode) 或者, fstream fp; fp.open(char *path, int mode) ;说明:mode为打开文件模式 ios::in :读取模式,如果文件不存在,则打开失败,与“r”一样ios::out :写入模式,有则重写,无则新建,与“w”一样ios::app :追加写入模式,有则追加,无则新建,与“a”一样ios::ate :以读写模式打开文件,并将文件指针指向文件末尾ios::trunc :打开文件时,清空文件内容ios::binary :以二进制模式打开文件 |
读取一个字符 | int fgetc(FILE *fp) 说明:fp 为文件指针。fgetc() 读取成功时返回读取到的字符,读取到文件末尾或读取失败时返回EOF。 |
int obj.get() 说明:与fgetc的用法一样,obj为fstream类的实例化对象 |
写入一个字符 | int fputc(int c, FILE *fp) 说明:fputc() 写入成功时返回写入的字符,失败时返回 EOF,返回值类型为 int 也是为了容纳这个负数 |
obj.put(int c) |
读取字符串 | fgets ( char *str, int n, FILE *fp ) 说明:str 为字符数组,n 为要读取的字符数目,fp 为文件指针,将读取到的字符串存入str中。此外,如果遇到换行符,则只输出一行字符串,即一次最多读一行 |
obj.getline(char* buf, int bufSize) obj.getline(char* buf, int bufSize, char delim) 说明:第一种用法与 fgets 一样,第二种则表示读取n个字符,遇到delim则直接输出(不包含delim),相当于把换行符换成了任意可选字符,比较特殊的是’\0’,他会直接输出 n 个字符 |
写入字符串 | int fputs( char *str, FILE *fp ) 说明:将字符串 str 写入文件 |
– |
任意读取 | size_t fread ( void *ptr, size_t size, size_t count, FILE *fp ) 说明:ptr 指向接收数据的首地址,size 表示每个数据块的字节数,count表示数据块数,fp为FILE指针。注意,fread 以字节数来读取数据,而不是字符数。 |
obj.read(char* buffer, int count) 说明:buffer 表示读取数据的存储位置,count 表示读取的字节数,相比较fread, 使用起来要简洁一些,但是功能还是一样的 |
任意写入 | size_t fwrite ( void* ptr, size_t size, size_t count, FILE* fp ) 说明:ptr 为待写入的数据首地址,size*count表示字节数,如果写入成功的话,返回写入的字节数 |
obj.write(char* buffer, int count) 说明:buffer 表示待写入数据,count 表示字节数 |
读取文件指针位置 | fgetpos(FILE* fp, fpos_t fpos) 说明:返回当前文件的指针位置,并保存在fpos_t类型变量中。这里有一个疑问,FILE好像只有一个文件指针,没有分读写指针 |
int obj.tellg() int obj.tellp() 说明:tellg返回文件读指针位置,tellp 返回文件写指针位置 |
移动文件指针 | int fseek ( FILE* fp, long offset, int origin ) fsetpos(FILE* fp, fpos_t fpos) |
seekg (int offset, int mode) seekp (int offset, int mode) 说明:offest 为相对偏移,mode 为指针起始位置,mode 有三种选择,分别为 ios::beg,ios::cur,ios::end ,分别表示文件开头,当前指针位置,文件尾 |
关闭文件 | fclose |
close |
C/C++ FILE 和 fstream 用法详解的更多相关文章
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
- install 命令用法详解
install 命令用法详解 http://man.linuxde.net/install install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户.install命令和cp命令类似 ...
- linux dmesg命令参数及用法详解(linux显示开机信息命令)
linux dmesg命令参数及用法详解(linux显示开机信息命令) http://blog.csdn.net/zhongyhc/article/details/8909905 功能说明:显示开机信 ...
- linux sed命令参数及用法详解
linux sed命令参数及用法详解 http://blog.csdn.net/namecyf/article/details/7336308 1. Sed简介 sed 是一种在线编辑器,它一次处理一 ...
- linux curl用法详解
linux curl用法详解 curl的应用方式,一是可以直接通过命令行工具,另一种是利用libcurl库做上层的开发.本篇主要总结一下命令行工具的http相关的应用, 尤其是http下载方面 ...
- 教程-Delphi中Spcomm使用属性及用法详解
Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...
- linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)
linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至: linux dd命令使用详解 dd 的主要 ...
- lsof 命令用法详解
lsof 命令用法详解 作用 用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP.UDP).找回/恢复删除的文件.是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所 ...
- Hadoop生态圈-zookeeper的API用法详解
Hadoop生态圈-zookeeper的API用法详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.测试前准备 1>.开启集群 [yinzhengjie@s101 ~] ...
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
随机推荐
- 移动自动化-swipe、scroll、drag、高级手势等
swipe 滑动事件 使用方法:driver.swipe(strat_x,start_y,end_x,end_y) swipe通过driver使用 传入起始的位置x和y,和结束的位置x和y 时间参数, ...
- allure-动态参数,报告优化方法。
1.allure.title方法 #前置需要在源文件:\venv\Lib\site-packages\allure_pytest\listener.py#在该文件修改为这样:test_result.p ...
- FSL--fsleyes建立软连接方法
在使用conda下载完fsleyes后,还是显示not found ,无法使用怎么办? 1.首先在/anaconda/envs/fslpython/bin/ 中搜索 fsleyes 确定已经下载好 ...
- 2.4 OpenEuler中C语言中的函数调用测试
2.4 OpenEuler中C语言中的函数调用测试 任务详情 在X86_64架构下实践2.4中的内容 通过GDB查看寄存器的内容,把教材中的图填入具体的值 把2.4的C代码在OpenEuler中重新实 ...
- TPS/QPS/RT的关系及计算
1.定义 TPS:Transactions Per Second,意思是每秒事务数,具体事务的定义,都是人为的,可以一个接口.多个接口.一个业务流程等等.一个事务是指事务内第一个请求发送到接收到最后一 ...
- js中,作用域与作用域链的概念
1 作用域 声明的一个变量只在一段代码范围内是有效的,并不是总有效的.例如 : function father(){ // 声明变量 var val = "作用域内"; // 定义 ...
- execsnoop
作用 execsnoop通过ftrace实时监控进程的exec()行为,输出短时进程的信息,包括进程 PID.父进程 PID.命令行参数以及执行的结果. 安装execsnoop git clone - ...
- [转]B树与B+树----mysql的索引结构
B树 和B+树是 MySQL索引使用的数据结构,对于索引优化和原理理解都非常重要,下面我的写文章就是要把B树,B+树的神秘面纱揭开,让大家在面试的时候碰到这个知识点一往无前,不再成为你的知识盲点! 1 ...
- codeforces 1391E Pairs of Pairs dfs树的性质
https://codeforces.com/problemset/problem/1391/E 题意:给一个无向图,找出以下任意一种输出答案 1,长度>=n/2(上界)的简单路径(没有同一个点 ...
- 【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享|附代码数据
原文链接:http://tecdat.cn/?p=10278 最近我们被客户要求撰写关于生存分析的研究报告,包括一些图形和统计输出. 生存分析(也称为工程中的可靠性分析)的目标是在协变量和事件时间之间 ...