试图获取程序以提示用户输入将转换为电话号码(正常工作),然后提示用户如果想重复该字母相同的步骤(这是我遇到错误的地方)。该程序将电话号码转换为电话号码,然后立即生成Cout语句,而无需让用户输入cin> gt;重复字符。
您想输入电话号码:y/n&quort
"请输入有效的输入:y/n。"
我有一个cin>>正如您在代码中看到的那样,两者之间。关于如何使此工作的任何建议?预先感谢您。
#include <iostream>
#include <string>
using namespace std;
void telephoneConverter();
int counter;
char phoneNumber;
int main()
{
char repeat;
telephoneConverter();
cout << endl
<< "Would you like to enter a phone
number: Y/N ";
cin >> repeat;
if (repeat == 'Y' || repeat == 'y') {
telephoneConverter();
}
if (repeat == 'N' || repeat == 'n') {
cout << "Have a good day.";
}
else
cout << "Please enter a valid input: Y/N.";
return 0;
}
void telephoneConverter()
{
cout << "nEnter a phone number in letters
only."
<< endl;
for (counter = 0; counter < 7; counter++) {
cin >> phoneNumber;
if (counter == 3)
cout << "-";
if ((phoneNumber >= 'A' && phoneNumber
<= 'Z')
|| (phoneNumber >= 'a' && phoneNumber
<= 'z'))
switch (phoneNumber) {
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;
}
}
};
我想您以按" Enter"为输入电话号码,以便在cin
流中保留新的行。然后,cin >> repeat
将立即消耗此新产品线。为避免这种情况,请跳过/忽略cin
流中的任何字符,直到(包括)在repeat
中阅读之前(包括)新行:
cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
cin >> repeat;
并包括#include <limits>
...