我使用in.get()计算标准输入流(cin)中的非空白字符数。对于每个不是空白字符的字符,我都会增加一个计数器。
在我完成计数之后,我想回去阅读这些角色。 in是std :: istream&类型的参数。 in(在这种情况下为cin)。
这是我正在尝试的:
std::streampos sp = in.tellg();
while(in)
{
char c = in.peek();
if(isspace(c))
break;
++str.mSize;
in.get();
}
in.seekg(sp);
sp的值为-1表示失败。为什么呢?
答案 0 :(得分:5)
并非所有输入流都是可搜索的 - 如果stdin
来自终端或管道,则无法向前或向后搜索它。在这种情况下,您必须自己缓冲数据。