如何遍历由空格分隔的单词组成的字符串的单词?
请注意,我对 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 << "Substring: " << subs << endl;
} while (iss);
}
最佳答案
我用它来通过分隔符分割字符串。第一个将结果放入预先构建的 vector 中,第二个返回一个新 vector 。
#include <string>
#include <sstream>
#include <vector>
#include <iterator>
template <typename Out>
void split(const std::string &s, char delim, Out result) {
std::istringstream iss(s);
std::string item;
while (std::getline(iss, item, delim)) {
*result++ = item;
}
}
std::vector<std::string> split(const std::string &s, char delim) {
std::vector<std::string> elems;
split(s, delim, std::back_inserter(elems));
return elems;
}
注意这个方案没有跳过空tokens,所以下面会找到4个item,其中一个是空的:
std::vector<std::string> x = split("one:two::three", ':');
关于c++ - 如何迭代字符串的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/236129/