我不明白這裏的問題。我研究過它,它編譯得很好,但是當我運行該程序時,它給了我「調試斷言失敗!」錯誤和上面的解釋。獲取錯誤「表達式:字符串下標超出範圍」
#include <iostream>
#include <string>
using namespace std;
bool checkVowel(char ch)
{
switch(ch)
{
case 'a':
case 'A':
case 'e':
case 'E':
case 'i':
case 'I':
case 'o':
case 'O':
case 'u':
case 'U':
return true;
default:
return false;
}}
int main()
{
string str;
char ch;
cout<<"Please enter a string, all vowels will be removed: ";
cin >> str;
for (int i=0;i=str.length();i++)
{
if (checkVowel(str[i]))
{
str=str.erase(i);
}}
cout << str;
}
如果在遍歷它時修改對象,請非常小心。請注意,循環會跳過它擦除的每個字符 - 它將移動到下一個位置,跳過由於「擦除」操作而「滑入」當前字符的字符。 (這是'if'循環的一個糟糕的選擇,使用'while',如果你調用'erase'則不會增加'i'。) –