有问题使循环工作与功能相结合



试图获取程序以提示用户输入将转换为电话号码(正常工作),然后提示用户如果想重复该字母相同的步骤(这是我遇到错误的地方)。该程序将电话号码转换为电话号码,然后立即生成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> ...

最新更新