gpt4 book ai didi

c++ eof 和 failbit 在读取二进制文件的过程中

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:00 26 4
gpt4 key购买 nike

我无法读取二进制文件。它似乎没有读到最后:

// get file size
ifs.open (inFile.c_str(), ios::binary | ios::ate);
cout << "file size: " << ifs.tellg() << endl;;
ifs.close();

// read file
ifs.open (inFile.c_str(), ios::in | ios::binary);
int counter = 0;
char c = 0;
for (counter = 0; ifs; ++counter)
ifs >> c;

cout << "last char: " << int(c) << endl;
cout << "read bytes: " << counter << endl;
cout << "fail? " << (ifs.fail() ? "yes" : "no") << endl;
cout << "bad? " << (ifs.bad() ? "yes" : "no") << endl;
cout << "eof? " << (ifs.eof() ? "yes" : "no") << endl;
ifs.close();

下面是输出。我不明白为什么我在文件中间得到那个 eofbit 以及为什么它与 failbit 一起出现:

file size:  289384
last char: 1
read bytes: 288598
fail? yes
bad? no
eof? yes

我在 Unix 系统上得到它

最佳答案

我做了一个测试,发现了问题。一旦你添加 ofs << c 就很明显了到 for 循环。

它不是在读取空白。

您可以通过添加 #include <iomanip> 来解决这个问题和 ifs >> noskipws ,或使用像 ifs.get(c) 这样的二进制输入函数

关于c++ eof 和 failbit 在读取二进制文件的过程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22970123/

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