stringstream和str不同步

时间:2014-12-14 18:37:58

标签: c++ string parsing stringstream

我正在用c ++编写一个简单的解析器。 我想删除std::ws的前导空格。

bool            Parser::readWhiteSpace()
{
  std::cout << "Before : str=[" << this->_ss.str() << "], peek=[" << (char)this->_ss.peek() << ']'<< std::endl;
  this->_ss >> std::ws;
  std::cout << "After : str=[" << this->_ss.str() << "], peek=[" << (char)this->_ss.peek() << ']'<< std::endl;                                                                                                                                          

  return (true);
}

输出结果为:

Before : str=[   something], peek=[ ]
After :  str=[   something], peek=[s]

我不明白为什么来自流的流和str不同步。 是不是应该影响str?

1 个答案:

答案 0 :(得分:2)

字符串流有一个指针,即输出位置指示器,指向&#34; next&#34;字符。通过修剪前导空格,后备缓冲区本身不会被修改,但此位置指示符会递增。 std :: ws读取一个字符直到它是一个空格,因此你最后一眼看到这个指针指向s