C++ 使用迭代器获取字符串中的短语。

C++ 使用迭代器获取字符串中的短语。,c++,vector,iterator,C++,Vector,Iterator,我有一些向量包含很多句子,比如“你好,你好”。我希望能够从一个句子中提取大小为2和5的短语,然后将其存储在另一个向量中。例如,从上面的字符串中,我希望得到“hello there”“hello there how” “你好,你好”和“你好,你好” 我尝试将句子拆分为单独的单词,并使用以下方法将它们存储在向量中: while( getline(stream, word, ' ') ) { vecWord.push_back(word); } 这将删除所有空白并存储每个单词。我知道迭代器

我有一些向量包含很多句子,比如“你好,你好”。我希望能够从一个句子中提取大小为2和5的短语,然后将其存储在另一个向量中。例如,从上面的字符串中,我希望得到“hello there”“hello there how” “你好,你好”和“你好,你好”

我尝试将句子拆分为单独的单词,并使用以下方法将它们存储在向量中:

while( getline(stream, word, ' ') )
{

    vecWord.push_back(word);
}
这将删除所有空白并存储每个单词。我知道迭代器指向向量中的每个元素。如何使用迭代器指向每个元素(也称为每个单词)并将它们组合成2-5大小


任何帮助都将不胜感激

试试这个。给定
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;
        }
    }
}
for(自动i=all.begin();i对于(auto j=start;j)那么,对于“abcdefg”,给定子字符串“cde”,你会打印“cde”、“cdef”和“cdefg”?是的。我想能够得到字符串的“短语”。这就是为什么我考虑使用迭代器。可能吗?如果我理解正确,是的。歧义来自“短语”的使用.我将不得不编辑这篇文章.它有点模糊