C++ 如何从这个switch语句中获得除default之外的输出?
我希望程序在用户输入该年后输出“年”;然而,似乎所有发生的事情都是默认语句发生。我使用了一个基本计算器中类似的代码,它可以很好地处理C++ 如何从这个switch语句中获得除default之外的输出?,c++,C++,我希望程序在用户输入该年后输出“年”;然而,似乎所有发生的事情都是默认语句发生。我使用了一个基本计算器中类似的代码,它可以很好地处理char和float但是,使用这个,我无法找出我错在哪里 //生成所选年份内发生事件的描述的简单程序。 #包括 使用名称空间std; int main() { 内耳; cout>nYear; 开关(nYear) { “1980”案: CUT< P>我不熟悉C++,但声明 int n< ,然后尝试将它与字符串(案例1980)进行比较,这给了我一个想法,那就是你的问题。
char
和float
但是,使用这个,我无法找出我错在哪里
//生成所选年份内发生事件的描述的简单程序。
#包括
使用名称空间std;
int main()
{
内耳;
cout>nYear;
开关(nYear)
{
“1980”案:
CUT< P>我不熟悉C++,但声明<代码> int n< <代码>,然后尝试将它与字符串(<代码>案例1980)<代码>进行比较,这给了我一个想法,那就是你的问题。 < p>你的代码>开关< /C> >块使用多字符文字,例如代码> 1980年将它们与int Nase比较,这是不可行的。(请参阅关于单引号多字符)。您永远不想使用这些字符。相反,请使用纯整数文字,因为int
是您从标准输入中读取的内容
switch(nYear)
{
case 1980:
cout << "1980"; // I will replace "year" with fact once code works.
break;
// ...
}
开关(nYear)
{
案例1980:
cout您试图将整数与带有两个单引号的字符串进行比较,这是不可能的。单引号只能包含单字符,双引号可以包含多个字符。但这仍然是一个错误
编写安全代码的更好方法(注意注释):
#包括
//避免使用“使用命名空间std”来防止
//命名歧义(良好实践)
内部主(空){
内耳;
std::cout>nYear;
//验证输入是否为整数
如果(!std::cin.good()){
std::cout'1980'
不是字符串。“1980”
可能是,但单引号是一个字符。'1980'
有点奇怪;它是一个多字符文本;它的类型是int
;它的值是实现定义的。感谢您的输入,您在使用名称空间std;方面帮助了我。我不是要比较int和字符串,我只是在寻找用法输入一个int,那么输出将是一个字符串。我的错误是使用了“1980”:而不仅仅是1980:。对于任何混淆,我深表歉意,再次感谢。
#include <iostream>
// Avoiding to use 'using namespace std' to prevent
// the naming ambiguity (good practice)
int main(void) {
int nYear;
std::cout << "Enter the year: ";
std::cin >> nYear;
// Verifying if the input was an integer
if (!std::cin.good()) {
std::cout << "Incorrect input!";
return 1;
}
switch (nYear) {
case 1980:
case 1981:
case 1982:
// Converting the integer to an std::string
std::cout << std::to_string(nYear);
break;
default:
std::cout << "Out of bounds.";
break;
}
std::cout << std::endl;
return 0;
}