C++利用一个fstream流读写文件

原文地址:https://blog.csdn.net/qq_34176290/article/details/80260377

fstream对象可以同时具有ifstreamofstream的功能,尝试使用一个流对文件进行读写的代码如下:


    
    
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. int main()
  5. {
  6. char data[ 200];
  7. fstream afile;
  8. afile.open( "afile.dat", ios::app|ios::out|ios::in);
  9. cin>>data;
  10. //将数据写入文件
  11. afile<<data;
  12. //将数据从文件中读取出来
  13. afile>>data;
  14. cout<<data;
  15. afile.close();
  16. return 0;
  17. }

向文件中输入111111,并从文件中成功读取出来


第二次运行向文件中输入2222222,由于使用了ios::app追加的文件打开模式,所以应该在111111后面加入了222222,期望输出1111122222,可实际只输出了222222



这是因为使用了ios::app模式导致文件定位到末尾,所以读出的数据是从222222开始的。

 如果要从头输出文件,则应该使用afile.seekg(ios::beg);,让文件重新定位到开头,代码如下


    
    
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. int main()
  5. {
  6. char data[ 200];
  7. fstream afile;
  8. afile.open( "afile.dat", ios::app|ios::out|ios::in);
  9. cin>>data;
  10. cin.ignore();
  11. afile<<data;
  12. afile.seekg(ios::beg);
  13. afile>>data;
  14. cout<<data;
  15. afile.close();
  16. return 0;
  17. }

运行后成功输出文件中所有数据


总结:使用一个fstream虽然可以同时进行读写,但也会因为文件指针的位置造成编程上的困难,当 C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开的文件。程序的异常退出可能会导致还未写入文件还留在缓冲中的数据丢失,因此使用ifstream和ofstream进行读写后立即关掉文件比一直使用一个fstream进行读写也更安全。


有错误欢迎指出


fstream对象可以同时具有ifstreamofstream的功能,尝试使用一个流对文件进行读写的代码如下:


  
  
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. int main()
  5. {
  6. char data[ 200];
  7. fstream afile;
  8. afile.open( "afile.dat", ios::app|ios::out|ios::in);
  9. cin>>data;
  10. //将数据写入文件
  11. afile<<data;
  12. //将数据从文件中读取出来
  13. afile>>data;
  14. cout<<data;
  15. afile.close();
  16. return 0;
  17. }

向文件中输入111111,并从文件中成功读取出来


第二次运行向文件中输入2222222,由于使用了ios::app追加的文件打开模式,所以应该在111111后面加入了222222,期望输出1111122222,可实际只输出了222222



这是因为使用了ios::app模式导致文件定位到末尾,所以读出的数据是从222222开始的。

 如果要从头输出文件,则应该使用afile.seekg(ios::beg);,让文件重新定位到开头,代码如下


  
  
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. int main()
  5. {
  6. char data[ 200];
  7. fstream afile;
  8. afile.open( "afile.dat", ios::app|ios::out|ios::in);
  9. cin>>data;
  10. cin.ignore();
  11. afile<<data;
  12. afile.seekg(ios::beg);
  13. afile>>data;
  14. cout<<data;
  15. afile.close();
  16. return 0;
  17. }

运行后成功输出文件中所有数据


总结:使用一个fstream虽然可以同时进行读写,但也会因为文件指针的位置造成编程上的困难,当 C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开的文件。程序的异常退出可能会导致还未写入文件还留在缓冲中的数据丢失,因此使用ifstream和ofstream进行读写后立即关掉文件比一直使用一个fstream进行读写也更安全。


有错误欢迎指出


猜你喜欢

转载自blog.csdn.net/mengdicfm/article/details/82910820