gpt4 book ai didi

c++ - ifstream 缓冲区限制/溢出? C++ (_cnt?)

转载 作者:行者123 更新时间:2023-11-28 02:57:31 25 4
gpt4 key购买 nike

由于某些奇怪的原因,当我的文件的字节数太大时,会在停止读取正确数据的地方发生此错误。就好像缓冲区在某个点停止接收数据。

我尽可能地简化了我的代码以确定问题所在,但我开始意识到这不是我的代码,而是某处的缓冲区?


如果我的文件是 14,034 字节并且我运行这个简单的代码:

ifstream inFile("text.txt"); //File is 14,034 bytes
char test;


while(inFile >> test) //This will stop looping at about the 768 - 769 loop
cout << test;

如果我用 for 循环强制它走得更远,结果是一样的:

ifstream inFile("text.txt"); //File is 14,034 bytes
char test;

for(int count = 0; count < 14034; ++count) //The loop will continue until the
test = inFile.get(); //end, but for whatever reason,
cout << test; //inFile stops at 768 - 769 again

现在:如果我使用相同的代码,但对于较小的文件(比如 900 字节),我似乎没有那个问题。

完全相同的代码,只是文件大小不同

ifstream inFile("text.txt"); //File is 900 bytes
char test;

while(inFile >> test) //This loop will continue to the 900th loop without
cout << test; //problems.

完全相同的代码,只是文件大小不同

ifstream inFile("text.txt"); //File is 900 bytes
char test;

for(int count = 0; count < 900; ++count) //The loop will continue until the
test = inFile.get(); //end (900) without problems.
cout << test;

我在 Google 上搜索了我的问题,但未能找到解决方案。我发现的唯一一个有类似问题的线程是这个:

fopen - can't write more than 16K?

但即便如此,也没有人真正理解他们在说什么 - 所以这个问题在技术上没有答案。

最佳答案

看起来你想以二进制模式读取文件,你可以这样做:

std::ifstream file("test.txt", std::ios::binary);
char byte;
while(file.read(&byte, 1)){
// Do something with byte
}

关于c++ - ifstream 缓冲区限制/溢出? C++ (_cnt?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21651832/

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