C++“未在此范围中声明”

bpsygsoo  于 2023-06-25  发布在  其他
关注(0)|答案(2)|浏览(227)

嘿,基本上,我写了一个简单的函数,问你有多少汽车,在数组中输入数量,然后把车的名字赋给数组。还做了一个for循环来显示它,它说它没有在作用域中声明,我只是不知道为什么它会这样说。有人能帮帮我吗?

error:           project2.cpp:13:16: error: 'cars' was not declared in this scope
   13 |         cin >> cars[i];
      |                ^~~~
project2.cpp:17:17: error: 'cars' was not declared in this scope
   17 |         cout << cars[i];
#include <iostream>
#include <string>
void display(){
    int amount;
    cout << "Car amount: ";
    cin >> amount;
    string cars[amount];
    for(int i=0; i<amount; i++){
        cout << "Enter " << i << " car name:";
        cin >> cars[i];
        '\n';
    }
    for(int i=0; i<amount; i++){
        cout << cars[i];
    }

}
using namespace std;
int main()
{
    
    display();

    return 0;
}
zpqajqem

zpqajqem1#

问题是using指令放在main之前

using namespace std;
int main()
{
    
    display();

    return 0;
}

其中不使用来自命名空间std的名称。另一方面,您正在使用位于using指令之前的函数display中的标准命名空间std中的名称。

void display(){
    int amount;
    cout << "Car amount: ";
    cin >> amount;
    string cars[amount];
    for(int i=0; i<amount; i++){
        cout << "Enter " << i << " car name:";
        cin >> cars[i];
        '\n';
    }
    for(int i=0; i<amount; i++){
        cout << cars[i];
    }

}

因此,找不到例如coutcinstring的名称。至少你应该把using指令放在函数定义之前。
请注意,可变长度数组作为函数中使用的数组

string cars[amount];

不是标准的C++特性。
使用容器std::vector<std::string>,如

std::vector<std::string> cars( amount );

要使用容器,您需要包含header <vector>
还有这个表达式语句

'\n';

没有效果。把它拿走。
相反,你可以写例如

for(int i=0; i<amount; i++){
    cout << "Enter " << i << " car name:";
    cin >> cars[i];
}

cout << '\n';

for(int i=0; i<amount; i++){
    cout << cars[i] << '\n';
}

一般来说,在全局命名空间中使用using指令是一个坏主意。最好使用限定名,例如

std::cout << "Car amount: ";

等等。

6ioyuze2

6ioyuze22#

//new code:
#include <iostream>
#include <string>
#define amount 5 //<---- defines the number of cars in the array
using namespace std;

void display() 
{
    //int amount;
    //cout << "Car amount: ";
    //cin >> amount;
    string cars[amount]; //now, you have a defined number of cars, c++ doesnt allow to use a variables as lenght of array

    for (int i = 0; i < amount; i++) 
    {
        cout << "Enter " << i + 1 << " car name:" << endl; //added endl instead of \n
        //                      ^more undestandable as it starts from 1 instead of 0
        cin >> cars[i];
        //'\n'; doesnt work like this, it need to be used in a string as single character, like "\ncars"
    }
    for (int i = 0; i < amount; i++) 
    {
        cout << cars[i] << " "; //more understandable
    }

}

int main()
{
    display();
    return 0;
}

相关问题