📜  c++中的文件处理(1)

📅  最后修改于: 2023-12-03 14:59:51.487000             🧑  作者: Mango

C++ 中的文件处理

在 C++ 中,文件处理是非常重要和常用的操作之一。文件处理可以包括从文件读取数据,将数据写入文件,复制和编辑文件等等。

打开和关闭文件

在 C++ 中,我们使用 fstream 类来打开和关闭文件。这个类包含在头文件 fstream 中。

打开文件

使用 fstream 类中的 open() 方法打开文件。该方法需要两个参数:文件名和打开模式。

#include <fstream>
using namespace std;

int main() {
    fstream file;
    file.open("example.txt", ios::out);
    if (!file) {
        cout << "File could not be opened." << endl;
        return 1;
    }
    // 文件操作代码
    file.close();
    return 0;
}

上面的代码打开了一个文件,文件名为 example.txt,打开模式为输出模式,也就是说,我们可以将数据写入这个文件中。如果打开文件失败,程序将输出错误信息。

关闭文件

完成文件操作后,我们需要使用 close() 方法关闭文件。这个方法没有参数。

file.close();
读取和写入文件

在 C++ 中,我们可以使用 <<>> 运算符读取和写入文件。

写入文件

将数据写入文件时,我们需要将数据插入到 fstream 对象使用的缓冲区中,然后使用 flush() 终止缓冲区,并确保所有数据都被写入文件,最后使用 close() 方法关闭文件。

fstream file;
file.open("example.txt", ios::out);
file << "Hello, World!" << endl;
file.flush();
file.close();

上面的代码将字符串 "Hello, World!" 写入了名为 example.txt 的文件中( << endl 是换行符)。

读取文件

读取文件时,我们可以使用 >> 运算符。该运算符会将文件中的每个单词读入到变量中。

fstream file;
file.open("example.txt", ios::in);
string word;
while (file >> word) {
    cout << word << " ";
}
file.close();

上面的代码读取了文件中的每个单词并将其输出到控制台。

复制文件

要复制文件,我们需要打开两个文件:一个用于读取数据,另一个用于写入数据。使用 while(!infile.eof()) 读取输入文件,使用 fstreamput() 方法将数据写入输出文件。

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ifstream infile("file.txt");
    ofstream outfile("copy.txt");
    char c;
    infile.get(c);
    while (!infile.eof()) {
        outfile.put(c);
        infile.get(c);
    }
    infile.close();
    outfile.close();
    return 0;
}

上面的代码将输入文件 file.txt 复制到输出文件 copy.txt 中。我们首先打开两个文件,然后从输入文件中读取一个字符,将其写入输出文件中,直到到达文件末尾。最后,我们关闭了两个文件。

编辑文件

要编辑文件,我们可以使用读取和写入文件的方法。我们可以先读取文件数据并保存到变量中,然后对该变量数据进行编辑,最后将编辑后的数据写入文件。

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ifstream infile("file.txt");
    string str;
    string new_str;
    while (getline(infile, str)) {
        new_str += str + "\n";
    }
    infile.close();
    new_str = new_str.substr(0, new_str.length() - 1);
    // 编辑 new_str
    ofstream outfile("file.txt");
    outfile << new_str;
    outfile.close();
    return 0;
}

上面的代码读取 file.txt 文件中的所有行,并将它们保存在变量 new_str 中。我们然后可以编辑 new_str,最后将其写回文件中。