How to determine the number of characters read by unformatted input functions?
std::istream上的各种无格式输入函数(实际上,是std::basic_istream,如read()、readsome()、getline()和ignore()都返回流。在处理结果时,通常需要知道实际读取了多少字符。依赖字符串中的空字符显然对二进制文件或甚至不涉及任何字符串的ignore()都不起作用,例如,像strlen()这样的东西完全是不可能的。
如何确定最后一次使用std::istream或更一般地说,std::basic_istream的无格式输入操作读取的字符数?
- 你在最近的回答中提到过std::istream::gcount,你担心什么?
- @logicstuff:我最近的答案是关于readsome(),它确实包括了答案,但是这个问题不太可能被任何使用std::istream::getline()或std::istream::read()的人发现,而这个问题更有希望被发现时,有人看确定的字符数正在阅读。
- @logicstuff:我希望这是一个常见问题。我不认为Dietmar需要这么做来实际回答关于C++的任何问题:
使用basic_istream基类的gcount()成员函数来检索最后一个未格式化输入操作获得的字符数。