内容来自 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>{}};
标签:遍历,iterator,iss,单词,istream,字符串,include
From: https://www.cnblogs.com/xiaomandujia/p/17794498.html