C++ 从 istream 中读取二进制数据
c++ read binary data from istream
我有一个 istream,我必须将它读入缓冲区。一旦遇到 eof,我找不到找到 read_len 的方法?我无法使用 get,因为我的文件没有分隔符。
好像只能一个字一个字地看,真的只有这样吗?
char buffer[128];
while(is.good()) {
is.read(buffer, sizeof(buffer));
size_t read_len = sizeof(buffer);
if (is.eof()) {
read_len = xxxx;
}
process(buffer, read_len);
}
您可以检查istream::gcount()
哪个“Returns最后一次未格式化输入操作提取的字符数”。
示例:
while(is) {
is.read(buffer, sizeof buffer);
auto read_len = is.gcount(); // <-
if(read_len > 0)
process(buffer, read_len);
else
break;
}
您也可以使用 istream::readsome()
- 但请注意:
“此函数的行为是高度特定于实现的。”这可能是也可能不是问题。
我有一个 istream,我必须将它读入缓冲区。一旦遇到 eof,我找不到找到 read_len 的方法?我无法使用 get,因为我的文件没有分隔符。
好像只能一个字一个字地看,真的只有这样吗?
char buffer[128];
while(is.good()) {
is.read(buffer, sizeof(buffer));
size_t read_len = sizeof(buffer);
if (is.eof()) {
read_len = xxxx;
}
process(buffer, read_len);
}
您可以检查istream::gcount()
哪个“Returns最后一次未格式化输入操作提取的字符数”。
示例:
while(is) {
is.read(buffer, sizeof buffer);
auto read_len = is.gcount(); // <-
if(read_len > 0)
process(buffer, read_len);
else
break;
}
您也可以使用 istream::readsome()
- 但请注意:
“此函数的行为是高度特定于实现的。”这可能是也可能不是问题。