C++ 中的文件操作是指程序与外部文件进行交互的过程,包括文件的打开、读取、写入和关闭等操作。
1. 文件流对象
C++ 中主要使用标准库中的文件流对象来进行文件操作:
-
输入文件流:
std::ifstream
-
输出文件流:
std::ofstream
2. 文件操作步骤
文件操作通常遵循以下几个步骤:
- 创建文件流对象
- 打开文件
- 读写数据
- 关闭文件
#include <iostream>
#include <fstream>
#include <string>
int main() {
// 创建文件流对象
std::ofstream outFile;
std::ifstream inFile;
// 打开文件
outFile.open("output.txt"); // 输出文件
inFile.open("input.txt"); // 输入文件
// 检查文件是否成功打开
if (!outFile.is_open()) {
std::cerr << "Failed to open output file." << std::endl;
return 1;
}
if (!inFile.is_open()) {
std::cerr << "Failed to open input file." << std::endl;
return 1;
}
// 写入数据
std::string name = "Alice";
int age = 10;
outFile << "Name: " << name << "\nAge: " << age << std::endl;
// 读取数据
std::string line;
while (getline(inFile, line)) {
std::cout << line << std::endl;
}
// 关闭文件
outFile.close();
inFile.close();
return 0;
}
上面主要方法说明:
1.使用 is_open() 方法检查文件是否成功打开
2.使用 eof() 方法检查文件是否结束
3.使用 fail() 方法检查是否有错误发生
4.std::cerr输出错误,与std:cout使用方法一致
下面是一个读取文件内容,然后计算和的例子:
#include <iostream>
#include <fstream>
int main() {
std::ifstream inFile("numbers.txt");
if (!inFile.is_open()) {
std::cerr << "Failed to open numbers.txt" << std::endl;
return 1;
}
int sum = 0;
int number;
while (inFile >> number) {
sum += number;
}
std::cout << "Sum: " << sum << std::endl;
inFile.close();
return 0;
}
如果没有这个文件numbers.txt,那么运行程序,会出现错误提示:
我们写一个文件保存到同目录下,文件内容:
1
2
3
4
5
然后运行程序:
写入文件信息,比如将刚才的运行结果,保存到result.txt中,那么程序中加入写入文件的代码:
#include <iostream>
#include <fstream>
int main() {
std::ifstream inFile("numbers.txt");
if (!inFile.is_open()) {
std::cerr << "Failed to open numbers.txt" << std::endl;
return 1;
}
int sum = 0;
int number;
while (inFile >> number) {
sum += number;
}
std::cout << "Sum: " << sum << std::endl;
inFile.close();
std::ofstream outFile("result.txt");
if (!outFile.is_open()) {
std::cerr << "Failed to open result.txt" << std::endl;
return 1;
}
std::string name = "Bob";
outFile << "Sum: " << sum << std::endl;
outFile.close();
return 0;
}
执行完成后,可以打开文件看到结果:
以上就是文件操作的基本流程和方法。