嘿我正在尝试将一些数字写入文件,但是当我打开文件时它是空的。你能帮帮我吗?感谢。
/** 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 **/
}
答案 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();