C ++在循环中编写文件

时间:2014-12-29 19:14:09

标签: c++ file loops filestream ofstream

这应该在30秒内计入txt文件。但它也几乎没有制作txt本身。我究竟做错了什么?或者是在循环中c ++只是不能处理文件。 文本文件中没有任何内容

for (i = 30; i >= 0; i--)
    {
        ofstream file;
        file.open("asd.txt");
        file << i;
        file.close();
        Sleep(1000);
    }

4 个答案:

答案 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.