stringstream代码分隔单词 - 这个东西是如何工作的?里面的代码片段

Zep*_*yer 1 c++ stringstream bitwise-operators

我有这个代码,我发现将字符串切成单词.我无法弄清楚while部分是如何工作的.如何知道将没有空格的单词提取到buf变量?似乎提取运算符(>>)既用于将位进入缓冲区,又用于循环返回true - 我只是无法弄清楚它是如何通过空格来切割单词的.

string buf; // Have a buffer string
stringstream ss(str); // Insert the string into a stream

vector<string> tokens; // Create vector to hold our words

while (ss >> buf)
    tokens.push_back(buf);
Run Code Online (Sandbox Code Playgroud)

Cub*_*bbi 5

我只是无法弄清楚它是如何通过空格切割文字的

由于类型bufstd::string,你需要阅读说明的operator>>是需要一个std::istream在左,一个std::string在右.

引用cppreference.com

提取字符并附加到其中,str直到:

N字符阅读,其中Nis.width()如果is.width() > 0,否则N就是str.max_size(),

is或中读取EOF标记

isspace(c,is.getloc())适用于下一个角色is.

最后一句用英语说"如果下一个字符是一个空格就停止"