如何迭代字符串中的单词?

我试图迭代字符串中的单词

可以假定字符串由空格分隔的单词组成

请注意,我对C字符串函数或那种字符操作/访问不感兴趣。另外,请在你的回答中优先考虑优雅而不是效率

我现在拥有的最佳解决方案是:

#包括<iostream>
#包括<sstream>
#包括<字符串>
使用名称空间std;
int main()
{
string s=“沿路的某个地方”;
istringstream iss(s);
做
{
串接头;
iss>>潜艇;
cout<<“Substring:<<subs<<<endl;
}while(iss);
}

有没有更优雅的方法

我用它来分隔字符串。第一种方法将结果放入预先构造的向量中,第二种方法返回一个新向量

\include<字符串>
#包括<sstream>
#包括<向量>
#包括<迭代器>
模板<typename Out>
无效拆分(常量标准::字符串和s、字符删除、输出结果){
标准:istringstream iss;
std::字符串项;
while(std::getline(iss、item、delim)){
*结果++=项目;
}
}
标准::向量<标准::字符串>拆分(const std::string&s,char delim){
标准::向量<标准::字符串>元素;
拆分(s、delim、std::背面插入器(elems));
返回元素;
}

请注意,此解决方案不会跳过空令牌,因此下面将找到4项,其中一项为空:

std::vector<标准::字符串>x=拆分(“一:二:三”,“一:”);

发表评论