📅  最后修改于: 2023-12-03 15:38:13.975000             🧑  作者: Mango
在 C++ 中进行文件处理是一项基本操作。本文将介绍如何在 C++ 中读取、写入和操作文件。
文件处理的第一步是打开文件。使用 <fstream>
头文件中的 std::ifstream
和 std::ofstream
类型,配合 open()
函数来打开文件。例如,要打开一个名为 myfile.txt
的文件,可以使用以下代码:
#include <fstream>
#include <iostream>
int main() {
std::ifstream fin;
fin.open("myfile.txt");
if (fin.fail()) {
std::cerr << "Failed to open file\n";
}
// 从文件中读取数据...
fin.close();
}
在这个例子中,我们创建了一个 std::ifstream
对象,名为 fin
,然后使用 open()
函数来打开 myfile.txt
文件。如果文件打开失败,我们需要处理错误。
类似地,我们也可以使用 std::ofstream
类型来创建一个输出文件流。例如,要将数据写入名为 myfile.txt
的文件,可以使用以下代码:
#include <fstream>
#include <iostream>
int main() {
std::ofstream fout;
fout.open("myfile.txt");
if (fout.fail()) {
std::cerr << "Failed to open file\n";
}
// 写入数据到文件中...
fout.close();
}
一旦文件被打开,我们可以使用输入文件流 (std::ifstream
) 来读取文件中的数据。最常见的读取方式是使用 >>
运算符从文件中读取一个值,或者使用 getline()
函数从文件中读取一行。例如,以下代码从文件中读取两个整数:
#include <fstream>
#include <iostream>
int main() {
std::ifstream fin;
fin.open("myfile.txt");
if (fin.fail()) {
std::cerr << "Failed to open file\n";
return -1;
}
int x, y;
fin >> x;
fin >> y;
std::cout << "Read x = " << x << ", y = " << y << "\n";
fin.close();
}
类似地,我们还可以使用 getline()
函数从文件中读取一行文本。例如,以下代码从文件中读取一行文本并输出到控制台:
#include <fstream>
#include <iostream>
#include <string>
int main() {
std::ifstream fin;
fin.open("myfile.txt");
if (fin.fail()) {
std::cerr << "Failed to open file\n";
return -1;
}
std::string line;
getline(fin, line);
std::cout << "Read line: " << line << "\n";
fin.close();
}
与读取文件类似,使用输出文件流 (std::ofstream
) 写入数据到文件中也是很简单的。最常见的写入方式是使用 <<
运算符来写入一个值,或者使用 write()
函数写入一段数据。例如,以下代码向文件中写入两个整数:
#include <fstream>
#include <iostream>
int main() {
std::ofstream fout;
fout.open("myfile.txt");
if (fout.fail()) {
std::cerr << "Failed to open file\n";
return -1;
}
int x = 10, y = 20;
fout << x << " " << y << "\n";
fout.close();
}
类似地,我们还可以使用 write()
函数向文件中写入一段数据。例如,以下代码将一段数据写入 myfile.dat
文件中:
#include <fstream>
#include <iostream>
int main() {
std::ofstream fout;
fout.open("myfile.dat");
if (fout.fail()) {
std::cerr << "Failed to open file\n";
return -1;
}
int data[] = {1, 2, 3, 4, 5};
fout.write((char*)data, sizeof(data));
fout.close();
}
文件指针是一个指向当前位置的指针,可以通过 seekg()
和 seekp()
函数来定位到文件中的任何位置。seekg()
函数用于定位输入文件流的指针,seekp()
函数用于定位输出文件流的指针。例如,以下代码从文件的第 5 个字符处开始读取 10 个字符:
#include <fstream>
#include <iostream>
int main() {
std::ifstream fin;
fin.open("myfile.txt");
if (fin.fail()) {
std::cerr << "Failed to open file\n";
return -1;
}
fin.seekg(4); // 定位到第 5 个字符
char buffer[11];
fin.read(buffer, 10); // 读取 10 个字符
buffer[10] = '\0';
std::cout << "Read: " << buffer << "\n";
fin.close();
}
本文讨论了 C++ 文件处理的基本操作,包括打开文件、读取文件、写入文件和定位文件指针。使用这些操作,程序员可以轻松地读取和写入磁盘上的文件,以及处理各种数据格式的文件。