C++ 中进行文件读写操作通常使用 fstream
类的对象,其中 ifstream
用于文件读取,ofstream
用于文件写入,而 fstream
则可用于同时进行读写操作。以下是一些常见的文件读写操作的示例代码:
文件写入(写入数据到文件)
#include <iostream>
#include <fstream>
int main() {
// 创建 ofstream 对象,以输出模式打开文件
std::ofstream ofs("example.txt", std::ios::out);
// 检查文件是否成功打开
if (!ofs.is_open()) {
std::cerr << "无法打开文件" << std::endl;
return 1; // 返回错误代码
}
// 向文件写入数据
ofs << "Hello, World!" << std::endl;
ofs << "This is a C++ file write example." << std::endl;
// 关闭文件流
ofs.close();
return 0; // 返回成功代码
}
文件读取(从文件读取数据)
#include <iostream>
#include <fstream>
#include <string>
int main() {
// 创建 ifstream 对象,以输入模式打开文件
std::ifstream ifs("example.txt", std::ios::in);
// 检查文件是否成功打开
if (!ifs.is_open()) {
std::cerr << "无法打开文件" << std::endl;
return 1; // 返回错误代码
}
// 从文件读取数据
std::string line;
while (std::getline(ifs, line)) {
std::cout << line << std::endl;
}
// 关闭文件流
ifs.close();
return 0; // 返回成功代码
}
这两个示例分别演示了文件写入和文件读取的基本操作。在写入示例中,ofstream
对象被用于创建或打开文件,并使用 <<
操作符将数据写入文件。在读取示例中,ifstream
对象被用于打开文件,并使用 getline
函数逐行读取文件内容。
请注意,这只是基本的文件读写示例。在实际应用中,你可能需要更多的错误检查、异常处理以及对文件操作的更复杂管理。
在C++中,你可以使用二进制模式进行文件的读写,这可以通过 ios::binary
标志来实现。以下是一个简单的例子,演示如何以二进制模式进行文件读写:
二进制文件写入
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// 创建 ofstream 对象,以二进制输出模式打开文件
ofstream ofs("binary_data.dat", ios::out | ios::binary);
// 检查文件是否成功打开
if (!ofs.is_open()) {
cerr << "无法打开二进制文件" << endl;
return 1; // 返回错误代码
}
// 写入二进制数据
int data[] = {1, 2, 3, 4, 5};
ofs.write(reinterpret_cast<char*>(data), sizeof(data));
// 关闭文件流
ofs.close();
return 0; // 返回成功代码
}
在这个例子中,ios::binary
标志用于指示文件以二进制模式打开。write
函数被用于写入二进制数据,reinterpret_cast
用于将整数数组转换为字符指针,确保以二进制方式写入。
二进制文件读取
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// 创建 ifstream 对象,以二进制输入模式打开文件
ifstream ifs("binary_data.dat", ios::in | ios::binary);
// 检查文件是否成功打开
if (!ifs.is_open()) {
cerr << "无法打开二进制文件" << endl;
return 1; // 返回错误代码
}
// 读取二进制数据
int data[5];
ifs.read(reinterpret_cast<char*>(data), sizeof(data));
// 输出读取的数据
for (int i = 0; i < 5; ++i) {
cout << "Data[" << i << "]: " << data[i] << endl;
}
// 关闭文件流
ifs.close();
return 0; // 返回成功代码
}
在这个例子中,同样使用了 ios::binary
标志来指示文件以二进制模式打开。read
函数用于从文件中读取二进制数据,并将其存储在整数数组中。最后,通过循环输出读取的数据。