所以在我的职能

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参考。对于单个参数,它需要迭代器
    }

10-07 16:21