最近遇到要将文件中的内容清空,再写入的问题,最终得到两个个靠谱的方法
1. 利用文件流,设置标志位即可,代码如下:
#include <fstream>
#include <iostream>
#include <exception>
using namespace std;
int main()
{
string fstr("hello,worldhope...");
try
{
fstream fout("stuinfo.txt",ios::out|ios::trunc);
fout<<fstr<<endl;
fout.close();
}catch(exception& e)
{
cout<< "error happened:" <<e.what()<<endl;
}
return 0;
}
运行前的 stuinfo.txt 中的内容:
运行程序之后,stuinfo.txt 中的内容,
可以看到是将之前文件中的内容清空之后再写入的
2. 利用标准c库中的文件操作函数也可,代码如下:
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
string str("hello world");
FILE* fp;
fp =fopen("stuinfo.txt","w");
if(fp == NULL)
cout<<"open file fail!"<<endl;
fwrite(str.c_str(),strlen(str.c_str()),1,fp);
return 0;
}
利用了fopen中的标志位就可达到上述的效果。