目录

一、文件操作

1.1 打开文件

1.2 关闭文件

1.3 读取文件

1.4 写入文件

1.5 文件指针

1.6 文件状态

1.7 其他文件操作

二、文件操作函数

2.1 打开文件函数

2.2 关闭文件函数

2.3 写入文件函数

2.4 读取文件函数

2.5 读取一行函数

2.6 获取文件大小函数

2.7 检测文件结束函数

2.8 更改文件位置函数


一、文件操作

C++中的文件操作功能主要通过标准库中的fstream头文件提供。fstream头文件定义了三个类:ifstream、ofstream和fstream,分别用于从文件中读取数据、向文件中写了入数据以及同时读写文件。

要使用文件操作功能,我们首先需要包含fstream头文件:

#include <fstream>

接下来,我们可以声明一个ifstream对象来读取文件,一个ofstream对象来写入文件,或者一个fstream对象来同时读写文件。例如:

ifstream inputFile;
ofstream outputFile;
fstream file;

1.1 打开文件

在使用文件之前,我们需要先打开文件。可以使用成员函数open()来打开文件。open()函数接受文件名和打开方式作为参数。

打开文件的方式有以下几种:

  • ios::in:打开文件用于读取。
  • ios::out:打开文件用于写入。
  • ios::app:在文件末尾追加写入内容。
  • ios::binary:以二进制模式打开文件。

例如:

  • 要打开一个文件用于读取,可以这样做:
ifstream inputFile;
inputFile.open("example.txt", ios::in);
  • 要打开一个文件用于写入,可以这样做:
ofstream outputFile;
outputFile.open("example.txt", ios::out);
  • 要打开一个文件用于追加写入内容,可以这样做:
ofstream outputFile;
outputFile.open("example.txt", ios::app);

1.2 关闭文件

在我们完成对文件的操作之后,应该及时关闭文件。可以使用成员函数close()来关闭文件。

例如:

inputFile.close();
outputFile.close();

1.3 读取文件

使用ifstream对象可以从文件中读取数据。可以使用成员函数>>来读取文件中的数据,例如读取一个整数:

int num;
inputFile >> num;

可以使用getline()函数逐行读取文件中的数据,例如读取一个字符串:

string line;
getline(inputFile, line);

1.4 写入文件

使用ofstream对象可以向文件中写入数据。可以使用成员函数<<来向文件中写入数据,例如写入一个整数:

int num = 10;
outputFile << num;

可以使用成员函数write()来按字节写入数据,例如写入一个字符串:

string str = "Hello World";
outputFile.write(str.c_str(), str.size());

1.5 文件指针

在读取或写入文件时,文件指针用于指示当前操作的位置。使用istreamostream类的成员函数tellg()tellp()可以获取文件指针的当前位置。

例如:

streampos pos = inputFile.tellg(); // 获取读取指针的位置
outputFile.seekp(pos); // 将写入指针移动到指定位置

1.6 文件状态

在进行文件操作时,可能会遇到一些错误,如文件打开失败或文件读写错误。可以使用成员函数good()eof()fail()bad()来检查文件的状态。

例如:

if (inputFile.good()) {
    // 文件打开成功
}
if (outputFile.eof()) {
    // 到达文件末尾
}
if (outputFile.fail()) {
    // 文件读写错误
}
if (outputFile.bad()) {
    // 文件操作失败
}

1.7 其他文件操作

除了读取和写入文件之外,还可以对文件进行其他操作,如创建文件、删除文件、重命名文件等。

  • 使用fstream头文件中的成员函数remove()可以删除文件:
remove("example.txt");
  • 使用成员函数rename()可以重命名文件:
rename("oldname.txt", "newname.txt");
  • 使用成员函数mkdir()可以创建目录:
mkdir("directory");
  • 使用成员函数rmdir()可以删除目录:
rmdir("directory");

二、文件操作函数

C++中的文件操作主要通过文件流(fstream)来实现。fstream类既可以用于读取文件的内容,也可以用于写入文件。

2.1 打开文件函数

  • open()函数:用于打开文件。通过指定文件名和打开模式(读取、写入、读写等),可以返回一个文件流对象。
  • 示例:myfile.open("example.txt", ios::out);

2.2 关闭文件函数

  • close()函数:用于关闭文件。需要在对文件进行操作之后调用,以释放文件资源。
  • 示例:myfile.close();

2.3 写入文件函数

  • write()函数:用于将数据写入文件。第一个参数是要写入的数据指针,第二个参数是要写入的字节数。
  • 示例:myfile.write(data, sizeof(data));

2.4 读取文件函数

  • read()函数:用于从文件中读取数据。第一个参数是要读取的数据指针,第二个参数是要读取的字节数。
  • 示例:myfile.read(buffer, sizeof(buffer));

2.5 读取一行函数

  • getline()函数:用于从文件中读取一行数据。第一个参数是要读取的数据指针,第二个参数是要读取的最大字节数。
  • 示例:getline(myfile, line);

2.6 获取文件大小函数

  • seekg()函数:用于设置文件读取位置。第一个参数是要设置的位置,第二个参数是相对位置的基准(文件开头、当前位置、文件末尾)。
  • tellg()函数:用于获取当前文件读取位置。
  • 示例:myfile.seekg(0, ios::end); size = myfile.tellg();

2.7 检测文件结束函数

  • eof()函数:用于检测文件是否已经读取到末尾。
  • 示例:while (!myfile.eof()) { // do something }

2.8 更改文件位置函数

  • seekp()函数:用于设置文件写入位置。参数和seekg()函数相同。
  • 示例:myfile.seekp(0, ios::end);
03-26 13:42