0

如何让用户在此程序中输入文本而不是数字。我怎样才能让 cin 声明接受文本?我必须使用char吗?

int main()
{
    using namespace std;
    int x = 5;
    int y = 8;
    int z;
    cout << "X=" << x << endl;
    cout << "Y=" << y << endl;
    cout << "Do you want to add these numbers?" << endl;
    int a;
    cin >> a;
    if (a == 1) {
        z = add(x, y);
    }
    if (a == 0) {
        cout << "Okay" << endl;
        return  0;
    }
    cout << x << "+" << y << "=" << z << endl;
    return 0;
}

---编辑---为什么这不起作用?

int main()
{
    using namespace std;
    int x = 5;
    int y = 8;
    int z;
    cout << "X = " << x << " Y = " << y << endl;
    string text;
    cout << "Do you want to add these numbers together?" << endl;
    cin >> text;
    switch (text) {
        case yes:
            z = add(x, y);
            break;
        case no: cout << "Okay" << endl;
        default:cout << "Please enter yes or no in lower case letters" << endl;
            break;
}
    return 0;
}

谢谢大家!如果你有兴趣,你可以看看我在这里制作的游戏。 http://pastebin.com/pmCEJU8E 您正在帮助一位年轻的程序员实现他的梦想。

4

3 回答 3

2

您可以std::string用于此目的。记住cin阅读你的文本直到空白。如果你想getline从同一个库中读取整行使用函数。

于 2013-03-02T15:57:14.187 回答
0

您可以使用std::string.

std::string str;
std::cin>>str; //read a string 

// to read a whole line
std::getline(stdin, str);
于 2013-03-02T15:55:30.263 回答
0

由于您只关心用户的 1 个字符响应,因为Do you want to add these numbers?可能由 a 连接,如果您打算只读取 1 个字符(Y/N),则应该(在我看来)使用getchar()函数。对于容易出错的 1 个字符输入处理,我会这样做:

bool terminate = false;
char choice;
while(terminate == false){
    cout << "X=" << x << endl;
    cout << "Y=" << y << endl;
    cout << "Do you want to add these numbers?" << endl;

    fflush(stdin);
    choice = getchar();
    switch(choice){
    case 'Y':
    case 'y':
        //do stuff
        terminate = true;
        break;
    case 'N':
    case 'n':
        //do stuff
        terminate = true;
        break;
    default:
        cout << "Wrong input!" << endl;
        break;
    }
}

作为对您编辑的回复

这不起作用,因为您不能std::string作为参数传递给switch. 正如我告诉你的,你应该为此目的只阅读一个字符。如果您坚持使用字符串,请不要使用switch,而是if else使用字符串比较器来查找块==

cin >> text;
if(text == "yes"){
    z = add(x, y);
}
else if(text == "no")
{
    cout << "Okay" << endl;
}
else
{
    cout << "Please enter yes or no in lower case letters" << endl;
}
于 2013-03-02T16:09:54.530 回答