我是这个网站的新手,但现在已经开了大约一个学期的编程课。我刚才有一个问题,为什么我的程序正在跳过所有情况,进入默认状态,并立即关闭而不停止或做任何事情。这可能只是一件小事,但我一直坐在这里,看不到它。这是代码。谢谢你的帮助:
//Name Game
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <math.h>
#include <iomanip>
using namespace std;
int main(void)
{
char name, zzz;
cout << "Hello, and welcome to the start of a fantastic new adventure. \nI'm your guide for the day: Sebastian. \nMay I ask what your name is?\n";
cin >> name;
switch (name)
{
case 'alex':
case 'Alex':
cout << "What an absolutely beautiful name. It sends chills down my spine just thinking about it. \nYou're one lucky girl.";
cout << "\nI've heard from my friend that you are as beautiful as your name suggests.";
break;
case 'Ryan':
case 'ryan':
cout << "Please stop using this project. What are you even doing here?";
break;
default:
cout << "That's a nice name. You should keep it for as long as you can.";
cin >> zzz;
return (0);
}
return 0;
}
答案 0 :(得分:6)
char
只是一个字符,而不是整个字符。
当您阅读char
时,它将是a
或A
或,
,但绝不会Alex
。
您必须为此任务使用字符串,这些字符串使用"double"
引号而不是'single'
引号。
答案 1 :(得分:0)
name变量被声明为char,只能容纳一个字符 - 我认为这就是为什么它始终选择默认情况。
我建议您阅读c ++处理字符串以完成您尝试做的事情。
答案 2 :(得分:0)
你的问题是因为你误解了char和string之间的变量类型,其中string是char(group)的char。
String name1 = "Alex";
cout<<name1;
它将打印 Alex (注意双引号),而
char name2 = 'Alex';
cout<<name2;
将打印 A ,因为变量name2仅适用于一个字符
因为你的case条件是多个char而你的switch变量只有一个字符,所以switch-case语句变为默认值。
替代方法是使用字符串变量并将switch-case语句更改为if-else语句,因为switch case cant句柄字符串变量(不创建指针或散列)