c++5.fstream|文件操作
大约 3 分钟
数据类型 | 描述 |
---|---|
ofstream | 输出文件流,用于创建文件并向文件写入信息。 |
ifstream | 输入文件流,用于从文件读取信息。 |
fstream | 文件流,同时具有 ofstream 和 ifstream 功能,可以创建文件,向文件写入信息,从文件读取信息。 |
步骤 | 操作 | 代码示例 |
---|---|---|
1 | 包含头文件 | #include <fstream> |
2 | 打开文件(文件输入流) | std::ifstream inputFile("input.txt"); |
3 | 打开文件(文件输出流) | std::ofstream outputFile("output.txt"); |
4 | 打开文件(文件输入和输出流) | `std::fstream file("data.txt", std::ios::in |
5 | 检查文件是否成功打开 | if (inputFile.is_open()) { /* 文件成功打开,进行读取操作 */ } |
6 | 读取操作(从文件中读取数据) | int value; inputFile >> value; |
7 | 写入操作(向文件中写入数据) | outputFile << "Hello, File!"; |
8 | 读写操作(文件输入和输出流的读写操作) | file >> value; file << "Data"; |
9 | 关闭文件流 | inputFile.close(); outputFile.close(); file.close(); |
基本用法
1. 包含头文件:
#include <fstream>
2. 打开文件:
// 文件输入流
std::ifstream inputFile("input.txt");
// 文件输出流
std::ofstream outputFile("output.txt");
// 文件输入和输出流
std::fstream file("data.txt", std::ios::in | std::ios::out);
在上述代码中,inputFile
用于读取 "input.txt" 文件,outputFile
用于写入 "output.txt" 文件,而 file
同时用于读取和写入 "data.txt" 文件。
3. 检查文件是否成功打开:
if (inputFile.is_open()) {
// 文件成功打开,进行读取操作
} else {
// 文件打开失败,处理错误
}
4. 读取和写入操作:
int value;
inputFile >> value; // 从文件读取一个整数
outputFile << "Hello, File!"; // 向文件写入字符串
对于文件输入和输出流,你可以使用 <<
和 >>
运算符进行读取和写入操作。
5. 关闭文件:
inputFile.close();
outputFile.close();
file.close();
完整案例
#include <iostream>
#include <fstream>
// 读取文件函数
std::string readFile(const std::string& filePath) {
std::ifstream inputFile(filePath);
// 检查文件是否成功打开
if (inputFile.is_open()) {
std::string text;
// 从文件读取内容
inputFile >> text;
// 关闭文件流
inputFile.close();
return text;
} else {
// 文件打开失败,处理错误
std::cerr << "Error opening file." << std::endl;
return "";
}
}
// 写入文件函数
void writeFile(const std::string& filePath, const std::string& content) {
std::ofstream outputFile(filePath);
// 检查文件是否成功打开
if (outputFile.is_open()) {
// 向文件写入内容
outputFile << content;
// 关闭文件流
outputFile.close();
} else {
// 文件打开失败,处理错误
std::cerr << "Error opening file." << std::endl;
}
}
int main() {
std::string filePath;
std::cout << "输入要打开的文件地址例如 C:\\test.txt" << std::endl;
std::cin >> filePath;
// 读取文件
std::string content = readFile(filePath);
if (!content.empty()) {
std::cout << "Read value from file: " << content << std::endl;
}
// 写入文件
std::cout << "输入写入的内容:" << std::endl;
std::string inputContent;
std::cin >> inputContent;
writeFile(filePath, inputContent);
return 0;
}