cin stream position

时间:2011-08-22 01:14:04

标签: c++

我使用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表示失败。为什么呢?

1 个答案:

答案 0 :(得分:5)

并非所有输入流都是可搜索的 - 如果stdin来自终端或管道,则无法向前或向后搜索它。在这种情况下,您必须自己缓冲数据。