【发布时间】:2014-12-14 18:37:58
【问题描述】:
我正在用 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 吗?
【问题讨论】:
-
str()返回整个缓冲区,“get”指针简单地移向下一个非空白字符,因此您只会在下一次读取时看到差异。 -
您可以从删除函数名中的前导空格开始!
标签: c++ string parsing stringstream