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

C++ removing non-alphabetic chars from beginning of a word

本文关键字:字符 删除 单词 开头 C++      更新时间:2023-10-16

我在一个字符串类型的方法中有以下代码,该方法从文件中读取单词,从单词开头删除所有非字母字符(如下所示),并在完成后返回。在主方法中打印出结果后,我注意到,即使它应该从开头删除所有的非字母字符,它总是打印出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;

如果有人能告诉我我到底看不到什么,我将不胜感激。我尝试过所有不同的函数,例如Erase()、isalpha()等。当不应该时,它们都会产生相同的结果。我在做什么,禁止删除最后一个非字母字符(单词开头)?我试着删除单词末尾的所有标点符号,但它会删除除一个之外的所有标点(再次)。

感谢您抽出时间

您的循环会跳过字符,因为您删除了一个项目并继续。如果删除,则必须减少i,因为删除后下一个字母位于相同位置。或者,对于每个位置,你必须有一个while循环来擦除该位置,直到它是alpha或结束,但减少i更简单,也不容易出错。

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