C ++ ofstream无法写入文件

时间:2010-04-06 02:21:47

标签: c++ file ifstream ofstream file-writing

嘿我正在尝试将一些数字写入文件,但是当我打开文件时它是空的。你能帮帮我吗?感谢。

/** main function **/
int main(){

    /** variables **/
    RandGen* random_generator = new RandGen;
    int random_numbers; 
    string file_name;   

    /** ask user for quantity of random number to produce **/
    cout << "How many random number would you like to create?" << endl;
    cin >> random_numbers;

    /** ask user for the name of the file to store the numbers **/
    cout << "Enter name of file to store random number" << endl;
    cin >> file_name;

    /** now create array to store the number **/
    int random_array [random_numbers];

    /** file the array with random integers **/
    for(int i=0; i<random_numbers; i++){
        random_array[i] = random_generator -> randInt(-20, 20);
        cout << random_array[i] << endl;
    }

    /** open file and write contents of random array **/
    const char* file = file_name.c_str();
    ofstream File(file);

    /** write contents to the file **/
    for(int i=0; i<random_numbers; i++){
        File << random_array[i] << endl;
    }

    /** close the file **/
    File.close();   

    return 0;
    /** END OF PROGRAM **/
}

3 个答案:

答案 0 :(得分:4)

您不能声明一个只在运行时在堆栈上已知大小的整数数组。您可以在堆上声明这样的数组:

int *random_array = new int[random_numbers];

不要忘记在main()的末尾添加delete [] random_array;(以及delete random_generator;)以释放使用new分配的内存。当你的程序退出时会自动释放这个内存,但无论如何都要释放它(如果你的程序有所增长,很容易忘记稍后添加它。)

除此之外,您的代码看起来很好。

答案 1 :(得分:0)

如果我只是填写您的RandGen课程来致电rand,该程序在Mac OS X 10.6上运行良好。

How many random number would you like to create?
10
Enter name of file to store random number
nums
55
25
44
56
56
53
20
29
54
57
Shadow:code dkrauss$ cat nums
55
25
44
56
56
53
20
29
54
57

此外,我认为没有理由不在海湾合作委员会工作。你在运行什么版本和平台?你能提供完整的资源吗?

答案 2 :(得分:0)

无需循环两次或保留数组或向量。

const char* file = file_name.c_str();
ofstream File(file);

for(int i=0; i<random_numbers; i++){
    int this_random_int = random_generator -> randInt(-20, 20);
    cout << this_random_int << endl;
    File << this_random_int << endl;
}

File.close();