C++删除单词开头的非字母字符
C++ removing non-alphabetic chars from beginning of a word
我在一个字符串类型的方法中有以下代码,该方法从文件中读取单词,从单词开头删除所有非字母字符(如下所示),并在完成后返回。在主方法中打印出结果后,我注意到,即使它应该从开头删除所有的非字母字符,它总是打印出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
更简单,也不容易出错。
在调试器上运行代码会立即在逻辑中显示此问题。
相关文章:
- 在C++的字符串中搜索和删除某些字符
- 删除/替换C++字符串中的多字符 (ÿû)
- 如何删除字符串中的前 2 个字符(如果它有"-")
- 如何在 getline 中删除/忽略超过特定数字的字符?
- 如何在 c++ 中删除字符串中的某些字符?
- 从双引号括起来的子字符串中删除特定字符
- 如何从字符数组(不是字符串数组)中删除符号
- C++ 从 std::string 中删除所有非数字字符
- xcode 从源代码中删除奇怪的控制字符
- C++从句子中删除给定字符的程序不起作用
- 正在从C++中的字符数组中删除字符
- 如何检查字符串中的最后一个字符是否是某个字符并将其从字符串中删除?(C++)
- C++从字符末尾删除值
- 从字符数组中删除双空格
- 循环以从字符数组中删除过多的空格 (C++)
- 如何删除新分配的字符,这也是函数返回值?
- 删除字符串向量中的字符重复
- 将一个字符替换为字符串中更多数量的字符,而不删除C++中的其他字母
- 删除以前打印的字符
- 回文查找器:非字母数字字符删除问题