我有一个名为'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不会消耗字符?
答案 0 :(得分:5)
使用str()
访问流的内容将返回缓冲区中的整个字符序列。如果您需要访问流的未读后续子序列,则可以将substr()
与tellg()
一起使用:
std::string unread = is.str().substr(is.tellg());
std::cout << unread; // "a0101"