我试图迭代字符串中的单词
可以假定字符串由空格分隔的单词组成
请注意,我对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=拆分(“一:二:三”,“一:”);