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;
}