📅  最后修改于: 2023-12-03 14:59:51.487000             🧑  作者: Mango
在 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())
读取输入文件,使用 fstream
的 put()
方法将数据写入输出文件。
#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
,最后将其写回文件中。