C/C++ FILE 和 fstream 用法详解
2024-10-21 11:57:42
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 |
最新文章
- Rxlifecycle(一):使用
- jQuery操作json数据
- C 记录
- ExtJS 等待两个/多个store加载完再执行操作的方法
- poj 2996 Help Me with the Game(模拟)
- NSdata 与 NSString,Byte数组,UIImage 的相互转换
- INI文件的读写
- Arcgis 9.3升级Arcgis10.1需要注重的一点
- Android 百度地图 SDK v3.0.0 (一)
- Eclipse注释模板设置方法
- Java中list<;Object[]>;、list<;Student>;、list<;Map<;String,String>;>;排序
- jQuery 中 jQuery(function(){})与(function(){})(jQuery) 的区别及用法
- ndk编译faac生成库
- ldd ldconfig
- AJAX 应用
- hibernate延迟加载org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.javakc.hibernate.onetomany.entity.DeptEntity.emp, could not initialize proxy - no Session
- java项目使用mvn打包时,出现数据库连接错误
- BSGS 算法
- .Net2.0部署在IIS8.5上的问题
- eclipse override报错