我的载体包含许多句子,例如“你好,你好吗”。我希望能够从句子中提取大小为2和5的短语,然后我将存储在另一个向量中。例如,从上面的字符串,我希望得到“你好”,“你好,怎么样” “你好,怎么样”和“你好,你好吗”。
我尝试将句子分成单独的单词并使用以下方法将它们存储在向量中:
while( getline(stream, word, ' ') )
{
vecWord.push_back(word);
}
这删除了所有空格并存储了每个单词。我知道迭代器指向向量中的每个元素。如何使用迭代器指向每个元素(也称为每个单词)并将它们组合成2 - 5的大小
任何帮助将不胜感激
答案 0 :(得分:0)
试试这个。给定all
(所有单词的列表)和target
,它是所需子字符串中的单词列表。这可以分解为太独立的问题。首先,找到子字符串,然后找到包含它的所有以下子字符串。第一部分非常类似于如何在字符串中查找子字符串的一般问题。也就是说,如何在“abc7845xyz”中找到“45x”。如果掌握迭代器的使用方式就是你正在做什么的想法,我建议用正常的C数组索引样式迭代查找字符串搜索算法,并尝试将它们转换为迭代器。
for(auto i = all.begin();i < all.end() - target.size();i++){
auto temp_i = i;
bool found = found = true;
for(auto j = target.begin();found && j < target.end();j++, temp_i++)
found = *temp_i == *j;
// Substring found, so print all subsequent substrings containing it.
if(found){
auto start = i;
for(auto end = i + target.size();end < all.end();end++){
for(auto j = start;j <= end;j++)
cout << j << " ";
cout << endl;
}
}
}