为什么我不能以这种方式清空文件?

时间:2015-04-23 15:01:27

标签: c++

#include <iostream>
#include <fstream>
#include <graphics.h>

using namespace std;

int c;
fstream file("happy.txt");

int main()
{
    file.open("happy.txt", fstream::out|fstream::in|fstream::trunc );
    file.close();  //to clear the file first
    initwindow(1000,600);
    while (true){
        c = getch();

        file.open("happy.txt");
        file.seekp(0,file.end);   
        int fileEndCursor = file.tellp(); 
        file << (char)c;  //store what the user typed into file
        file.close();
    }
}

但事实证明文件没有被清除,每次代码运行完毕,上次运行的内容仍然在文件中。请帮忙。

1 个答案:

答案 0 :(得分:6)

你试图打开它两次:

fstream file("happy.txt");
file.open("happy.txt", fstream::out|fstream::in|fstream::trunc );

第一次尝试在构造函数中打开它而不告诉它截断所以只打开它而将所有内容留在里面。
因为它已经打开,所以第二个电话不会做任何事情。

通过更改

来修复它
fstream file("happy.txt");

fstream file;