C++动态数组和文件读取不能一起工作

srg*_*701 0 c++ memory arrays compiler-construction file-io

这样的代码:

int _tmain(int argc, _TCHAR* argv[])
{
    int *test = new int[];
    ifstream f("ofile.txt");
    for (int i=0,v; i<10; i++)
    {
        f>>v;
        test[i]=1; 
        cout<<"\nv = "<<v<<", i = "<<i<<endl;
    }

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

编译后导致此消息:

在此输入图像描述

我想(如果我错了,请纠正我)这里有一些关于记忆的错误,但细节对我来说不得而知.如果我删除其中一个(文件读取或数组),它的工作原理.所以听到问题的解释会很棒.

Mic*_*l J 5

你在想java.要分配像这样的数组,你需要给出一个大小.例如

    int *test = new int[20];
Run Code Online (Sandbox Code Playgroud)

然而,更好的方案是使用整数向量.

    #include <iostream>
    #include <fstream>
    #include <vector>
    #include <algorithm>  // for sort()

    int main(int argc, char *argv[])
    {
        std::vector<int> data;
        std::ifstream fsin("ofile.txt");

        int count = 0;
        while (fsin.good())
        {
            int v;
            fsin >> v;
            if (fsin.good())
            {
                data.push_back(v);
                std::cout << "\nv = " << v << ", i = " << count++ << std::endl;
            }
        }

        std::sort(data.begin(), data.end());

        for (size_t i=0; i<data.size(); i++)
            std::cout << i << '\t' << data[i] << std::endl;

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