由于C++是兼容C的,所以使用C++进行文件操作时,会发现有两套库函数可以使用,它们分别是C风格的和C++风格的。

C风格的文件操作函数

打开文件,关闭文件

#include <stdio.h>
FILE* fopen(const char* path, const char* mode);
int fclose(FILE* fp);

读取文件,写入文件

#include <stdio.h>
size_t fread(void* ptr, size_t size, size_t nmemb, FILE* stream);
size_t fwrite(const void* ptr, size_t size, size_t nmemb, FILE* stream);

关于fread中两个表示大小的参数,在这个 stackoverflow 问题中得到了比较好的解答。

改变文件指示器的位置

#include <stdio.h>
int fseek(FILE* stream, long offset, int whence);
long ftell(FILE* stream);
void rewind(FILE* stream);

C++风格的文件操作函数

C++将文件操作函数封装为 fstream 操作类,一个文件实际上就会对应一个 fstream 对象,一下函数都是 fstream 的成员函数。
文件打开和关闭

void open(const char* filename, ios_base::openmode mode = ios_base::in|ios_base::out);
void open(const std::string& filename, ios_base::openmode mode = ios_base::in|ios_base::out);
void close();

对于文件的读写可以才采用流运算符重载的方法完成。

friend fstream& operator << (fstream& ofs, const CRecord& objRecord);
friend fstream& operator >> (fstream& ifs, CRecord& objRecord);

题外话

在liunx下,可以使用wc命令查看文件中的相关信息。wc命令会打印出该文件的行数、单词数、字符数。