1. 程式人生 > >C++Primer,C++標準IO庫閱讀心得

C++Primer,C++標準IO庫閱讀心得

IO 標準庫型別和標頭檔案


iostream istream 從流中讀取
    ostream 寫到流中去
    iostream 對流進行讀寫;從 istream 和 ostream 派生而來
fstream ifstream 從檔案中讀取;由 istream 派生而來
    ofstream 寫到檔案中去;由 ostream 派生而來
    fstream 讀寫檔案;由 iostream 派生而來
sstream istringstream 從 string 物件中讀取;由 istream 派生而來
    ostringstream 寫到 string 物件中去;由 ostream 派生而來
    stringstream 對 string 物件進行讀寫;由 iostream 派生而來

 

1 一個檔案流物件再次使用時要先clear

ifstream& open_file(ifstream &in, const string &file)
{
in.close(); // close in case it was already open
in.clear(); // clear any existing errors
// if the open fails, the stream will be in an invalid state
in.open(file.c_str()); // open the file we were given
return in; // condition state is good if open succeeded
}

 

2 開啟檔案時要檢查物件狀態

ifstream input;
vector<string>::const_iterator it = files.begin();
// for each file in the vector
while (it != files.end()) {
input.open(it->c_str()); // open the file
// if the file is ok, read and "process" the input
if (!input)
break; // error: bail out!
while(input >> s) // do the work on this file
process(s);
input.close(); // close file when we're done with it
input.clear(); // reset state to ok
++it; // increment iterator to get next file
}

3 檔案開啟模式組合

out 開啟檔案做寫操作,刪除檔案中已有的資料
out | app 開啟檔案做寫操作,在檔案尾寫入
out | trunc 與 out 模式相同
in 開啟檔案做讀操作
in | out 開啟檔案做讀、寫操作,並定位於檔案開頭處
in | out | trunc 開啟檔案做讀、寫操作,刪除檔案中已有的資料