这应该在30秒内计入txt文件。但它也几乎没有制作txt本身。我究竟做错了什么?或者是在循环中c ++只是不能处理文件。 文本文件中没有任何内容
for (i = 30; i >= 0; i--)
{
ofstream file;
file.open("asd.txt");
file << i;
file.close();
Sleep(1000);
}
答案 0 :(得分:2)
基本上你做的是每次创建代表文件的对象并尝试打开它。 如果每次使用新引用(对象)访问该文件时,它都会写入新数据并删除以前的数据。 尝试这样做:
int main()
{
ofstream file;
file.open("test.txt");
for (int i = 30; i > 0; --i)
{
file << i << endl;
Sleep(1000);
}
file.close();
system("pause");
return 0;
}
答案 1 :(得分:1)
将ofstream移出循环,如下所示:
// ^^ There is the useless stuff
ofstream file;
for (i=0;i<maxs;i++)
{
system("cls");
secondsLeft=maxs-i;
hours=secondsLeft/3600;
secondsLeft=secondsLeft-hours*3600;
minutes=secondsLeft/60;
secondsLeft=secondsLeft-minutes*60;
seconds=secondsLeft;
cout << hours<< " : " << minutes<< " : " << seconds << " ";
file.open ("countdown.txt", ios::trunc);
file << hours << " : " << minutes<< " : " << seconds;
file.close();
Sleep(1000);
}
答案 2 :(得分:1)
您可以声明ofstream
不在循环中。
如果你必须在循环中使用它,请使用追加模式。
file.open("test.txt", std::ofstream::out | std::ofstream::app);
答案 3 :(得分:0)
首先,每次循环都会覆盖输出文件“asd.txt”。您只需为每个要执行IO的会话(循环外)创建和初始化文件指针。关闭文件指针也是如此。
ofstream file; //Create file pointer variable
file.open("asd.txt"); //Initialize 'file" to open "asd.txt" for writing
for (i = 30; i >= 0; i--)
{
file << i; //You'll need to add a new line if you want 1 number per line
Sleep(1000); //Assuming this is in microseconds so sleep for 1 second
}
file.close(); //close the file pointer and flushing all pending IO operations to it.