C++二进制流读写文件
时间: 2024-11-05 11:10:30 浏览: 3
在C++中,二进制流(Binary Streams)是一种用于处理非文本数据,如图片、音频或二进制数据结构的输入输出流。它比文本流(Text Streams)更适合存储原始数值,因为它们不会进行额外的字符转换,保持了数据的精确性和效率。
`fstream`库在C++中提供了一组类用于操作二进制流,包括`ifstream`(用于读取)和`ofstream`(用于写入)。下面是一个简单的例子:
```cpp
#include <fstream>
#include <iostream>
// 想要写入的数据
std::vector<int> data = {10, 20, 30, 40, 50};
int main() {
// 打开一个二进制文件(如果不存在则创建)
std::ofstream file("binary_data.bin", std::ios::binary);
// 如果打开成功
if (file.is_open()) {
// 写入二进制数据
for (int value : data) {
file.write(reinterpret_cast<char*>(&value), sizeof(value));
}
// 关闭文件
file.close();
std::cout << "Data written successfully.\n";
} else {
std::cerr << "Unable to open the file.\n";
}
return 0;
}
// 另一方面,读取文件
std::ifstream readFile("binary_data.bin", std::ios::binary);
if (readFile.is_open()) {
int numElements;
// 读取元素的数量
readFile.read(reinterpret_cast<char*>(&numElements), sizeof(numElements));
// 创建向量来存储数据
std::vector<int> readData(numElements);
// 读取并解码所有数据
for (size_t i = 0; i < numElements; ++i) {
readFile.read(reinterpret_cast<char*>(&readData[i]), sizeof(readData[i]));
}
// 关闭文件
readFile.close();
// 现在你可以使用readData
} else {
std::cerr << "Unable to open the file for reading.\n";
}
```
阅读全文