使用字符串回应用户输入

时间:2012-10-26 02:33:25

标签: c++ codeblocks

我的程序应该显示所请求形状的名称。我不习惯使用字符串,那么我如何回应用户输入(C显示锥形等)?我猜是某种if语句,但不知道如何写它。

示例:

Hello.  Welcome to the shape volume  computing program.
Which shape do  you have?  (C for cone, U for   cube,   Y, for  cylinder P for pyramid, S   for sphere, or Q    to quit)
Enter   shape:  U
okay,   cube.   Please enter the length of a side:  3
okay,   the length of the side = 3
the volume  = 27
enter   shape: C
okay,   cone.   Please enter the radius of the  base:   2
please enter the height:    3
okay,   the radius =  2 and the height  = 3
the volume  = 12.56
enter   shape: Q
bye!

代码:

int main()
{
    string C,U,Y,P,S;
    C= "cone";
    U= "cube";
    Y= "cylinder";
    P= "pyramid";
    S= "sphere";
    int Q= -1;

    cout<< " Enter C for cone, U for cube, Y for cylinder, P for pyramid, S for sphere or Q
    to quit. " <<endl;
    cin>> C,U,Y,P,S,Q;

    if(Q= -1)
        cout<< " Goodbye! " <<endl;
    return 0;
}

2 个答案:

答案 0 :(得分:1)

声明

cin>> C,U,Y,P,S,Q;

装置

(cin>> C),U,Y,P,S,Q;

因为逗号运算符具有所有运算符的最低优先级。

因此它将一个字符输入C,然后(这是逗号运算符所做的)评估UYP,{{1}和S,后者的值作为表达式结果,然后被丢弃。

这可能你认为它做了什么。

要完成这项工作,你可以

  • 使用单个输入变量,例如名为Q

  • 使用line标题中的getline功能输入一行。

  • 检查该输入行是否为<string>,在这种情况下是U字还是其他字母,在这种情况下做其他事情。 "U"声明对此有好处。

答案 1 :(得分:1)

这段代码错了。

cin >>  C,U,Y,P,S,Q;

这会尝试将用户输入的内容写入C指向的内存中。其他逗号分隔部分是单独的语句,没有任何效果。

您要做的是将用户的输入写入新变量。

char choice;
cin >> choice;

然后看看那是什么并做出相应的反应。

if ('C' == choice)
{
   // print output
}
else if ('U' == choice)
{
   // print output