msl*_*lot 5 c++ std stringstream getline sstream
我有这个代码,
int main()
{
std::string st;
std::stringstream ss;
ss<<"hej hej med dig"<<std::endl;
std::getline(ss,st,' ');
std::cout <<"ss.rdbuf()->str() : " << ss.rdbuf()->str();
std::cout <<"ss.rdbuf() : " << ss.rdbuf();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
给我这个输出
ss.rdbuf() - > str():hej hej med dig
ss.rdbuf():hej med dig
但那是为什么呢?是因为运算符<str()的ostreams定义给了我不同的输出.在我看来,即使我使用了getline,输出应该是相同的.
ss.rdbuf()->str();
Run Code Online (Sandbox Code Playgroud)
返回所有缓冲区内容的副本.
做什么std::cout << ss.rdbuf();?
参见说明
basic_ostream<charT,traits>& operator<<(basic_streambuf<charT,traits>* sb);
Run Code Online (Sandbox Code Playgroud)
它从缓冲区逐个字符读取并将它们写入ostream,直到写入/异常发生eof/fail.
你已经读过buff中的一个单词.现在它读了休息部分.
| 归档时间: |
|
| 查看次数: |
9209 次 |
| 最近记录: |