C++方式 | C方式 | ||
头文件 | fstream | stdio.h | |
open | file.open(const char *filename,const char *mode) | FILE* fopen(const char *filename,const char | |
mode | 只读 | ios::in | r |
只写 | ios::out | w | |
文件末尾 | ios::ate | a | |
附加 | ios::app | a+ | |
存在则删除 | ios::trunc | w+ | |
不存在则创建/存在则失败 | ios::noreplace | ||
不存在则失败 | ios::nocreate | r+ | |
二进制方式 | ios::binary | b | |
文本方式 | default | t//default | |
检测 | 返回值 | file.is_open() | |
返回值 | 成功 | 1 | FILE* fp |
失败 | 0 | NULL | |
按字符读写 | 读取 | char file.get()/bool file.get(ch) | char fgetc(FILE* fp) |
写入 | file.putback() | fput(char ch,FILE* fp) | |
读取整行 | 清空缓存 | file.getline(char *buffer,int ncount,char delim='\n') | |
保留缓存 | file.get(char *buffer,int ncount,char delim='\n') | char *fgets(char *buf, int bufsize, FILE *stream); | |
写入整行 | fputs(FILE *fp,char *str) | ||
文件尾部 | 到达返回1,否则返回0 | file.get()==EOF/file.peek()==EOF | int feof(FILE* fp) |
按格式读写 | 读取 | file<<arguments | fscanf(FILE*fp,const char format,&argument) |
写入 | file>>buffer | fprint(FILE*fp,const char format,argument) | |
操作符 | 换行 | endl | \n' |
结束字符串 | ends | \0' | |
二进制方式读写 | 读取 | file.read(char * str,size) | size_t fread( void *buffer, size_t size, size_t count, FILE *stream );返回成功的块数 |
写入 | file.write(char * str,size) | size_t fwrite( void *buffer, size_t size, size_t count, FILE *stream );返回成功的块数 | |
位置移动 | 读取方式 | seekp(size,mode)//操纵同一个指针 | fseek(FILE*fp,size,mode)//成功返回0,失败返回非零 |
写入方式 | seekg(size,mode)//操纵同一个指针 | ||
移动方式 | 当前位置 | ios::cur | SEEK_CUR |
从文件开头 | ios::beg | SEEK_SET | |
从文件末尾 | ios::end | SEEK_END | |
指针复位 | 遇到EOF之后不再有效,需要重新打开文件 | file.seekg(0)/file.seekp(0) | void rewind(FILE*fp) |
求当前位置 | 读取 | pos_type file.tellp() | long ftell(FILE*fp) |
写入 | pos_type file.tellg() | ||
关闭文件 | file.close() | int fclose(FILE *fp) | |
tellg返回指针所在的位置数,windows将换行符\n处理为两个字符 |
点击右键选择在新标签页查看图片以获得清晰图片