ifstream :: read不会告诉它真正读取了多少字节?

时间:2012-07-30 11:45:25

标签: c++ ifstream readfile

我正在使用ifstream::read来读取文件

ifstream ifs("a.txt");
char buf[1024];
ifs.read(buf, 1024);

但是a.txt的大小可能小于1000 bytes,那么我怎么知道从ifs读取了多少字节?

1 个答案:

答案 0 :(得分:19)

您可以使用std::ifstream::gcount获取上次操作提取的字符数量:

ifstream ifs("a.txt");
char buf[1024];
ifs.read(buf, 1024);
size_t extracted = ifs.gcount();

ifstream ifs("a.txt");
char buf[1024];
size_t extracted = ifs.read(buf, 1024).gcount();

因为read(...)返回*this