這是我第一次在這裏發佈,所以如果我做錯了事,我會提前道歉。我正在開發一個項目,其中一部分程序需要將電話號碼(IE「Rad-Code」)翻譯成相應的電話號碼(IE 723-2633)。我試圖在()和length()類成員函數中使用switch語句。我嘗試切換我的代碼的這個部分的順序,但它不斷給我一個錯誤,指出:「輸入電話字:Rad-Code 723-2633terminate在調用'std :: out_of_range'實例後調用什麼( ):basic_string的::在:__N(這是8)> =這個 - >尺寸()(這是8)」在()的類成員函數和帶循環的switch語句
這裏是有問題的代碼:
else if (choice == PHONE_WORD)
{
cout << "\nEnter the phone word: ";
cin >> phoneWord;
/*while (phoneWord.length() != 8)
{
cout << "Please enter a valid phone number length: ";
getline(cin, phoneWord);
}*/
for (int i = 0; i < phoneWord.length(); i++)
switch (phoneWord.at(i))
{
case 'A':
case 'a':
case 'B':
case 'b':
case 'C':
case 'c':
cout << "2";
break;
case 'D':
case 'd':
case 'E':
case 'e':
case 'F':
case 'f':
cout << "3";
break;
case 'G':
case 'g':
case 'H':
case 'h':
case 'I':
case 'i':
cout << "4";
break;
case 'J':
case 'j':
case 'K':
case 'k':
case 'L':
case 'l':
cout << "5";
break;
case 'M':
case 'm':
case 'N':
case 'n':
case 'O':
case 'o':
cout << "6";
break;
case 'P':
case 'p':
case 'Q':
case 'q':
case 'R':
case 'r':
case 'S':
case 's':
cout << "7";
break;
case 'T':
case 't':
case 'U':
case 'u':
case 'V':
case 'v':
cout << "8";
break;
case 'W':
case 'w':
case 'X':
case 'x':
case 'Y':
case 'y':
case 'Z':
case 'z':
cout << "9";
break;
case '-':
cout << "-";
break;
default:
cout << "Please enter a valid input: ";
break;
}
cout << phoneWord << " translates to " << phoneWord.at(0) << phoneWord.at(1) << phoneWord.at(2) << phoneWord.at(3) << phoneWord.at(4) << phoneWord.at(5) << phoneWord.at(6) << phoneWord.at(8) << ".";
}
這裏是整個程序: –
您不檢查長度:'phoneWord.at(6)<< phoneWord.at(8)'如果字符串是8個字母,有效索引是0-7。你可能會考慮一個循環,它不太容易出錯,並且不計入特定的大小。 –
嗨,感謝您的快速響應。我試圖做一個循環,但我不知道從哪裏開始。我試圖在臨時數組中使用「for」循環,但這可能是我的問題來自的地方。另外,我不小心輸入了8而不是7. 哇,我只是試過了,而且我一定會越來越多。當然還有一些額外的事情需要糾正,但這是一個簡單的忽略。對此,我真的非常感激!我仍在研究這一部分,所以我可能還有一些其他問題。 –