C++利用一個fstream流讀寫檔案
原文地址: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進行讀寫也更安全。
有錯誤歡迎指出