istream不消耗字符?

时间:2014-02-21 01:41:49

标签: c++ stream istream

我有一个名为'is'的istringstream并包含字符串“101a0101”。我的代码在这里:

cout << is.str() << endl;

char bit;
while (is >> bit) {
    if (bit == '0') /* do stuff */;
    else if (bit == '1') /* do stuff */;
    else break;
}

cout << is.str() << endl;

这是我的输出

output:   
101a0101
101a0101

为什么我的istringstream不会消耗字符?

1 个答案:

答案 0 :(得分:5)

使用str()访问流的内容将返回缓冲区中的整个字符序列。如果您需要访问流的未读后续子序列,则可以将substr()tellg()一起使用:

std::string unread = is.str().substr(is.tellg());
std::cout << unread; // "a0101"