原文地址:https://blog.csdn.net/qq_34176290/article/details/80260377
fstream对象可以同时具有ifstream和ofstream的功能,尝试使用一个流对文件进行读写的代码如下:
-
#include <iostream>
-
#include <fstream>
-
using
namespace
std;
-
-
int main()
-
{
-
char data[
200];
-
fstream afile;
-
afile.open(
"afile.dat", ios::app|ios::out|ios::in);
-
cin>>data;
-
//将数据写入文件
-
afile<<data;
-
//将数据从文件中读取出来
-
afile>>data;
-
cout<<data;
-
afile.close();
-
return
0;
-
}
向文件中输入111111,并从文件中成功读取出来
第二次运行向文件中输入2222222,由于使用了ios::app追加的文件打开模式,所以应该在111111后面加入了222222,期望输出1111122222,可实际只输出了222222
这是因为使用了ios::app模式导致文件定位到末尾,所以读出的数据是从222222开始的。
如果要从头输出文件,则应该使用afile.seekg(ios::beg);,让文件重新定位到开头,代码如下
-
#include <iostream>
-
#include <fstream>
-
using
namespace
std;
-
-
int main()
-
{
-
char data[
200];
-
fstream afile;
-
afile.open(
"afile.dat", ios::app|ios::out|ios::in);
-
cin>>data;
-
cin.ignore();
-
afile<<data;
-
afile.seekg(ios::beg);
-
afile>>data;
-
cout<<data;
-
afile.close();
-
return
0;
-
}
运行后成功输出文件中所有数据
总结:使用一个fstream虽然可以同时进行读写,但也会因为文件指针的位置造成编程上的困难,当 C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开的文件。程序的异常退出可能会导致还未写入文件还留在缓冲中的数据丢失,因此使用ifstream和ofstream进行读写后立即关掉文件比一直使用一个fstream进行读写也更安全。
有错误欢迎指出
fstream对象可以同时具有ifstream和ofstream的功能,尝试使用一个流对文件进行读写的代码如下:
-
#include <iostream>
-
#include <fstream>
-
using
namespace
std;
-
-
int main()
-
{
-
char data[
200];
-
fstream afile;
-
afile.open(
"afile.dat", ios::app|ios::out|ios::in);
-
cin>>data;
-
//将数据写入文件
-
afile<<data;
-
//将数据从文件中读取出来
-
afile>>data;
-
cout<<data;
-
afile.close();
-
return
0;
-
}
向文件中输入111111,并从文件中成功读取出来
第二次运行向文件中输入2222222,由于使用了ios::app追加的文件打开模式,所以应该在111111后面加入了222222,期望输出1111122222,可实际只输出了222222
这是因为使用了ios::app模式导致文件定位到末尾,所以读出的数据是从222222开始的。
如果要从头输出文件,则应该使用afile.seekg(ios::beg);,让文件重新定位到开头,代码如下
-
#include <iostream>
-
#include <fstream>
-
using
namespace
std;
-
-
int main()
-
{
-
char data[
200];
-
fstream afile;
-
afile.open(
"afile.dat", ios::app|ios::out|ios::in);
-
cin>>data;
-
cin.ignore();
-
afile<<data;
-
afile.seekg(ios::beg);
-
afile>>data;
-
cout<<data;
-
afile.close();
-
return
0;
-
}
运行后成功输出文件中所有数据
总结:使用一个fstream虽然可以同时进行读写,但也会因为文件指针的位置造成编程上的困难,当 C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开的文件。程序的异常退出可能会导致还未写入文件还留在缓冲中的数据丢失,因此使用ifstream和ofstream进行读写后立即关掉文件比一直使用一个fstream进行读写也更安全。
有错误欢迎指出