gpt4 book ai didi

C++按 block 读取文本文件

转载 作者:搜寻专家 更新时间:2023-10-31 01:13:31 25 4
gpt4 key购买 nike

我真的没有在谷歌上找到满意的答案,C++ 中的 I/O 有点棘手。如果可能的话,我想按 block 将文本文件读入 vector 。 las,我不知道该怎么做。我什至不确定我的无限循环是否会在所有可能性中中断,因为 I/O 很棘手。所以,我能想到的最好方法是:

char buffer[1025]; //let's say read by 1024 char block
buffer[1024] = '\0';
std::fstream fin("index.xml");
if (!fin) {
std::cerr << "Unable to open file";
} else {
while (true) {
fin.read(buffer, 1024);
std::cout << buffer;
if (fin.eof())
break;
}

}

请注意第二行带有'\0'。这不奇怪吗?我能做得更好吗?我可以将数据读入 vector 而不是 char 数组吗?直接读入vector合适吗?

感谢您的回答。

附言。分块阅读确实有意义。这段代码很短,但我将其存储在循环缓冲区中。

最佳答案

您应该可以执行以下操作

 vector<char> buffer (1024,0);      // create vector of 1024 chars with value 0   
fin.read(&buffer[0], buffer.size());

vector 中的元素保证连续存储,因此这应该有效 - 但您应该确保 vector 永远不会为空。我最近在这里问了一个类似的问题 - 查看标准 Can I call functions that take an array/pointer argument using a std::vector instead? 中的具体细节的答案

关于C++按 block 读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12401183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com