c++txt文件分块读取
时间: 2024-12-08 16:02:30 浏览: 15
在 C++ 中,处理大文件时一次性读取可能会导致内存不足,特别是当文件非常大时。为了优化这种情况,可以采用分块读取(或者说迭代读取)的方式,每次读取文件的一部分而不是全部内容。以下是使用 `fstream` 分块读取文本文件的一个简化示例:
```cpp
#include <fstream>
#include <vector>
#include <string>
std::string read_file_in_chunks(const std::string& filename, size_t chunk_size = 1024) {
std::ifstream file(filename, std::ios::binary);
if (!file.is_open()) {
throw std::runtime_error("无法打开文件");
}
std::vector<char> buffer(chunk_size);
std::string content;
while (true) {
file.read(buffer.data(), chunk_size);
if (file.eof() || !file) { // 文件已读完或遇到错误
break;
}
content.append(buffer.data(), file.gcount()); // 获取实际读取的字节数
}
file.close();
return content;
}
int main() {
try {
std::string content = read_file_in_chunks("D:\\临时\\123.txt");
// 然后你可以遍历content,一行一行地处理内容...
} catch (const std::exception &e) {
std::cerr << "Error: " << e.what() << endl;
}
return 0;
}
```
这个函数首先尝试打开文件,然后在循环中每次读取 `chunk_size` 字节,直到文件结束或遇到错误。每次读取后,它会追加当前的缓冲区数据到最终的结果字符串中。
阅读全文