如何遍历字符串的单词?

发布时间 2023-10-28 19:17:26作者: 小满独家

内容来自 DOC https://q.houxu6.top/?s=如何遍历字符串的单词?

如何遍历由空格分隔的单词组成的字符串中的单词?

请注意,我对C字符串函数或那种字符操作/访问不感兴趣。我更喜欢优雅而不是效率。我目前的解决方法:

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main() {
    string s = "Somewhere down the road";
    istringstream iss(s);

    do {
        string subs;
        iss >> subs;
        cout << "子字符串: " << subs << endl;
    } while (iss);
}

值得一提,这是另一种从输入字符串中提取标记的方法,仅依赖于标准库设施。这是STL设计背后的强大和优雅的一个例子。

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>

int main() {
    using namespace std;
    string sentence = "And I feel fine...";
    istringstream iss(sentence);
    copy(istream_iterator<string>(iss),
         istream_iterator<string>(),
         ostream_iterator<string>(cout, "
"));
}

与将提取的标记复制到输出流不同,可以使用相同的通用 copy算法将它们插入到容器中。

vector<string> tokens;
copy(istream_iterator<string>(iss),
     istream_iterator<string>(),
     back_inserter(tokens));

或者直接创建vector

vector<string> tokens{istream_iterator<string>{iss},
                      istream_iterator<string>{}};