好吧,伙计们...从句子中获取单词并将它们存储在一个字符串矢量中
这是我的集合,它包含所有字母。我将一个单词定义为由该集合中的连续字母组成。
const char LETTERS_ARR[] = {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};
const std::set<char> LETTERS_SET(LETTERS_ARR, LETTERS_ARR + sizeof(LETTERS_ARR)/sizeof(char));
我希望这个函数将采取在代表一个句子一个字符串,并返回在句子中的各个单词串的向量。
std::vector<std::string> get_sntnc_wrds(std::string S) {
std::vector<std::string> retvec;
std::string::iterator it = S.begin();
while (it != S.end()) {
if (LETTERS_SET.count(*it) == 1) {
std::string str(1,*it);
int k(0);
while (((it+k+1) != S.end()) && (LETTERS_SET.count(*(it+k+1) == 1))) {
str.push_back(*(it + (++k)));
}
retvec.push_back(str);
it += k;
}
else {
++it;
}
}
return retvec;
}
例如,下面的调用应返回字符串“呦”,“耶”等
std::string mystring("Yo, dawg, I heard you life functions, so we put a function inside your function so you can derive while you derive.");
std::vector<std::string> mystringvec = get_sntnc_wrds(mystring);
的载体,但一切都正如预期不会。我试着运行我的代码,它将整个句子放入矢量的第一个也是唯一的元素中。我的功能是非常混乱的代码,也许你可以帮助我想出一个更简单的版本。我不希望你能够在我写这个函数的可怜尝试中追踪我的思考过程。
可能存在除空格之外的字符用于分割(如逗号)。 –
在find_if算法中修改谓词(空格和not_space)并不难。 – mihai