C++ C++;从单词开头删除非字母字符

C++ C++;从单词开头删除非字母字符,c++,iostream,ifstream,erase-remove-idiom,C++,Iostream,Ifstream,Erase Remove Idiom,我在一个字符串类型的方法中有以下代码,该方法从文件中读取单词,从单词开头删除所有非字母字符(如下所示),然后返回它们。在main方法中打印出结果后,我注意到,即使它应该从开头删除所有非字母字符,它仍然会打印出1,例如: 该列表包含以下文字: 那里,——曾经是个可爱的——;小兔子和他中弹了,故事结束了 inFile >> word; for(int i=0; i<word.size(); i++){ if(word[i] >= 'A' &&a

我在一个字符串类型的方法中有以下代码,该方法从文件中读取单词,从单词开头删除所有非字母字符(如下所示),然后返回它们。在main方法中打印出结果后,我注意到,即使它应该从开头删除所有非字母字符,它仍然会打印出1,例如: 该列表包含以下文字:

那里,——曾经是个可爱的——;小兔子和他中弹了,故事结束了

inFile >> word;
    for(int i=0; i<word.size(); i++){
        if(word[i] >= 'A' && word[i] <= 'Z' || word[i] >= 'a' && word[i] <= 'z')  break;
        else word.erase(i,1);
    }
    return word;
应用该函数后,输出为:

那里——曾经是一个可爱的女孩;小兔子和他中弹了,故事结束了

inFile >> word;
    for(int i=0; i<word.size(); i++){
        if(word[i] >= 'A' && word[i] <= 'Z' || word[i] >= 'a' && word[i] <= 'z')  break;
        else word.erase(i,1);
    }
    return word;
infle>>word;

for(int i=0;i='A'&&word[i]='A'&&word[i]删除项目并继续后,循环将跳过字符。如果删除,则必须减少
i
,因为删除后下一个字母位于同一位置。或者,每个位置都必须有一个while循环,将该位置删除到alpha或end,但减少
i
更简单,更不容易出错


在调试器上运行代码会立即在逻辑中显示此问题。

与您的问题无关,但您确实知道该函数吗?我实际上刚刚修复了它:p没有注意到我没有将I--erase@JoachimPileborg是的,我以前用过,但我忘了问题出在我的循环值中,而不是函数whi我刚刚注意到。:)我会接受你的答案,即使我在发布了我需要做的问题后立即意识到了这一点。:)