当我调用下面的函数时,它会将我的输入添加到向量中,但始终会向向量中添加 6 个额外的单元格。任何想法为什么会发生?
这是相关的功能:
void seperate_words(string str1, vector<struct wordstype> &vec1)
{
string temp_str;
string::iterator is=str1.begin();
wordstype input_word;
while (is<str1.end())
{
if (((*is)!='-')&&((*is)!='.')&&((*is)!=',')&&((*is)!=';')&&((*is)!='?')&&((*is)!='!')&&((*is)!=':'))
{
temp_str.push_back(*is);
++is;
}
else
{
input_word.word=temp_str;
vec1.push_back(input_word);
is=str1.erase(is);
temp_str.clear();
}
}
input_word.word=temp_str;
vec1.push_back(input_word);
temp_str.clear();
}
调用func的主程序的相关区间为:
**while(end_flag==-1){
cin>> temp_string;
end_flag=temp_string.find(end_str);/*indicates whether the end sign is precieved*/
seperate_words(temp_string,words_vecref);/*seperats the input into single words and inserts them into a vector*/
}
int x=words_vec.size();
cout<<x<<" "<<std::endl;
for (vector<struct wordstype>::iterator p_it=words_vec.begin();p_it<words_vec.end();p_it++)
{cout<<(*p_it).word<<" ";}**
例如:我走在街上,我的向量大小应该只增加 6 个元素(而不是 12 个)
预期输出:只有六个单元格,在每个 oe 中,将是输入中的一个单词,按输入顺序排列。