ifstream,字节读取?

use*_*821 19 c++

如何使用ifstream :: read函数读取多少字节?

Tell说文件是10个字节,windows说它也是10个字节,但是文件中只有8个字节,所以当我读它时,它只读取8个字节,所以我最终得到的缓冲区太大了.

Ale*_*x B 42

您可以gcount()在阅读后立即通过呼叫来查找.

ifs.read(buf, sizeof buf);
std::streamsize bytes = ifs.gcount();
Run Code Online (Sandbox Code Playgroud)

  • 如果 gcount() 没有读取所请求的确切内容,那么 fstream 对象是否仍处于有效状态以继续读取? (2认同)

Ara*_*raK 5

有一个函数叫做readsome(...)你想要的:

streamsize readsome ( char* s, streamsize n );
Run Code Online (Sandbox Code Playgroud)

返回值提取的字符数.

  • `readsome`只从与流关联的内存缓冲区中读取,即使文件足够大,它也不一定会读到文件末尾.除非在非常有限的情况下,否则您不想使用它. (16认同)