未在此范围内声明(C++中的数组)

-8 c++ arrays error-handling text file

我是C++编程的初学者我有一个文本文件,其中有100万个素数用空格分隔.我想把它们放在一个int数组primes []中.以下是我写的代码:

int main()
{
    ifstream infile;
    infile.open("C:/Users/DELL/Desktop/primes1.txt");

    //check for error
    if(infile.fail()){cerr<<"Error Opening File"<<endl;
    exit(1);}
    int i=0;
    primes = new int[1000001];
    while(i != infile.eof()){
        infile>>primes[i];
        i++;
    }

    cout<<  primes[4]  <<endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我构建并运行时,它会出现以下错误:

"错误:'primes'未在此范围内声明"

这是什么解决方案?

fre*_*low 5

我强烈建议在堆上使用向量而不是数组来防止资源泄漏:

std::vector<int> primes;
int p;
while (infile >> p)
{
    primes.push_back(p);
}
Run Code Online (Sandbox Code Playgroud)


rig*_*old 5

C++ 很漂亮,它的库里有很好的东西,允许你以高级,简洁,声明的方式做到这一点:

std::vector<int> primes(std::istream_iterator<int>{infile},
                        std::istream_iterator<int>{});
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,你可以用{}替换第二个参数,所以`std :: vector <int> primes(std :: istream_iterator <int> {infile},{});`有效. (3认同)