所以在我的职能
string chopstring(string& tocut, List test[26]){
string totoken = "";
while(tocut[0] == ' ' || tocut[0] == 10 || tocut[0] == 13){
tocut.erase(0);
}
int finish = 0;
finish = tocut.find(" ", 0);
if (finish == string::npos){
cout << "NPOS!" << endl;
for(int i = 0 ; i < 26; i++)
test[i].Print();
}
for (int i = 0; i < finish; i++){
totoken += tocut[i];
}
string::iterator start = tocut.begin();
string::iterator end = tocut.begin() + totoken.length();
tocut.erase(start, end);
return tokenize(totoken);
}
我在处理字符串::: erase时遇到麻烦。它会删除整个字符串吗?有什么建议么?我也想知道原因,所以请解释一下。
在另一个将返回的令牌存储在链表中的函数中被调用,然后再次调用该函数,直到字符串(tocut)为空。它输入的第一行是
“《时光旅行者》(因此可以方便地谈论他)”。
现在发生的事情是,它采用第一个“ The”,将其标记化,然后执行此操作,但是tocut.erase(start,end),删除整个字符串,并导致程序崩溃。
最佳答案
请执行以下操作:
while(tocut [0] ==''|| tocut [0] == 10 || tocut [0] == 13){
tocut.erase(0,1); //请参阅cpp参考。对于单个参数,它需要迭代器
}