1
#include <iostream>

typedef int temperature;
temperature celsiustemperature[4];

int main()
{
    using namespace std;
    cout << "Enter a start temperature in celsius: ";
    cin >> celsiustemperature[0];
    cout << "Enter an end temperature in celsius: ";
    cin >> celsiustemperature[1];
    cout << "You printed " << celsiustemperature[0] << " and " << celsiustemperature[1] << "." << " Is this correct?" << endl;
    char szYesOrNo;
    cin >> szYesOrNo;
    switch (szYesOrNo)
    {
        case "yes":
               cout << "win";
               break;
        case "no":
              cout << "winner";
              break;
     }
     return 0;
}

我无法弄清楚以下代码有什么问题。很抱歉没有添加评论;win如果用户输入yeswinner用户输入,我希望它打印no

4

6 回答 6

4

这不会编译,因为szYesOrNo是 a char,并且您正在将它与switch语句中的字符串文字进行比较。字符串文字属于 类型const char[],不能直接与 比较char

使用std::string而不是char

std::string szYesOrNo;

这也将迫使您删除switch, 因为switch无法对string值进行操作(另请注意,您switch没有default大小写,因此它不会处理不正确的输入)。这样做:

if (szYesOrNo == "yes")
{
    cout << "win";
}
else if (szYesOrNo == "no")
{
     cout << "winner";
}
else
{
    // Handle wrong input...
}
于 2013-03-12T00:03:41.503 回答
0

你不能打开一个字符串。仅适用于类整数类型(整数、枚举、字符、长整数)。

于 2013-03-12T00:03:58.537 回答
0

您的代码的主要问题是您声明了一个变量,char szYesOrNo;它只能包含一个符号,例如一个字母,但随后期望该字符输入一个完整的单词。您应该使用 astring来代替。当你解决这个问题时,你将需要使用if语句而不是switch语句来做出决定。

于 2013-03-12T00:04:14.187 回答
0

首先,szYesOrNo是一个单一的char因此只能包含一个字符。当你这样做时cin >> szYesOrNo;,你只是在阅读yn

其次,您正在尝试使用switch语句将这个单曲char与字符串文字"yes""no". 这种比较没有意义。字符串文字的类型是“N 数组const char”。

相反,std::string像这样使用:

string szYesOrNo;
cin >> szYesOrNo;
if (szYesOrNo == "yes") {
  cout << "win";
} else if (szYesOrNo == "no") {
  cout << "winner";
}
于 2013-03-12T00:04:27.170 回答
0

szYesOrNo 是一个字符,所以你不能在“是”的情况下切换它,它是一个字符串(3个字符)

于 2013-03-12T00:04:42.403 回答
0
char szYesOrNo;

这是一个单一的字符。

switch (szYesOrNo)
{
    case "yes":

这会将单个字符的值与string的地址"yes"进行比较,这不是您想要的。

输入到字符串,或比较字符。

比较字符:

switch (szYesOrNo)
{
    case 'y':

要比较字符串,不能使用 switch 语句。您可以使用嵌套if/else

string szYesOrNo;

if(szYesOrNo == "yes") {
    cout << "win";
} else if(szYesOrNo == "no") {
    cout << "winner";
}

您可以==在将 astring与 a进行比较时使用char[](这是什么"yes")。string确保比较内容而不仅仅是地址。

于 2013-03-12T00:02:59.493 回答