提问者:小点点

如何在if语句中移除此作用域中未声明的错误? 我正确地声明了变量吗?


我刚开始C++像一个星期前,不知道如何解决这个错误! 我不确定我是否正确地声明了作业变量。。。所以如果它是错误的,请告诉我如何声明它! 如果CIN>>作业的输入为none,我希望If语句为true,输出为“accepted!”

#include <iostream>

using namespace std;

int main()
{
    int age;

    char job;
    
    cout<<"Enter your age:";

    cin >> age;

    cout<<"\n";

    cout<<"Enter your job:";

    cin>>job;

    cout<<"\n";

    if (age > 18 && age < 60 && job == none ) {
        cout << "Accepted!" << endl;
    }

    return 0;
}

错误消息:

./Playground/file0.cpp: In function 'int main()':
./Playground/file0.cpp:16:40: error: 'none' was not declared in this scope
   16 |     if (age > 18 && age < 60 && job == none ) {
      |                                        ^~~~

共3个答案

匿名用户

编译器将none视为标识符,而您显然没有该标识符。 那就是错误的原因。 您可能希望有“none”,它在C++中的类型是常量char[5]

为了进行比较,在C++中,可以使用std::string。 这意味着将作业更改为std::string。 其次,如果作业中有空格,您可能还需要使用std::getLine

下面是演示的示例代码:

#include <iostream>
#include <string> // std::string

int main()
{
   std::cout << "Enter your age: ";
   int age;
   std::cin >> age;

   std::cout << "\nEnter your job:";
   std::string job;             // declare like this
   std::cin.ignore();
   std::cin.clear();            // to clear the input stream.
   std::getline(std::cin, job); // get the user input, which may have spaces!

   if (18 < age && age < 60 && job == "none")
   {
      std::cout << "\nAccepted!\n";
   }
}

匿名用户

您的代码有两个错误,第一个错误是变量job。 由于您将它定义为一个字符,所以变量只能保存一个字符,但是由于要保存的是一组字符(在本例中是作业标题),您要么需要一个charC样式的数组,例如char job[32],其中32是数组可以容纳的最大字符量:或者由于您使用的是C++,您有可以存储字符数组的string类型,并且在定义变量时不需要分配最大大小。 因此,您的代码应该如下所示:

#include <iostream>

using namespace std;

int main()
{
    int age;

    string job;

 ...

第二个问题出现在if语句中。 未定义变量none。 如果要检查变量job是否为空,可以使用以下命令

if (age > 18 && age < 60 && job == "") {
        cout << "Accepted!" << endl;
    }

“”等于空字符串。 祝你使用C++好运。

匿名用户

把none变成字符串就行了。 您正在将job与一个名为none的变量进行比较。 但您应该将其与字符串“none”进行比较。 请尝试执行以下操作:

if (age > 18 && age < 60 && job == "none" ) {
        cout << "Accepted!" << endl;
}

相关问题