標籤:include 輸入輸出 參數 上網 class 中標 ctrl main ios
今天看C ++ primer 時,看到了ios::tie() 函數。不明白其含義,跟不知道作用。於是上網查了一下。
cplusplus.com 給出的定義是:
ostream* tie ( ) const; //返回指向綁定的輸出資料流的指標。
ostream* tie ( ostream* tiestr ); //將tiestr指向的輸出資料流綁定的該對象上,並返回上一個綁定的輸出資料流指標。
什麼意思呢?
就是說對於一個ios(輸入輸出資料流)對象,可以把一個輸出資料流和它“綁定”起來。不帶參數執行,返回“綁定”的輸出資料流指標;帶一個輸出資料流指標作為參數,則重新設定綁定的對象,並返回前任綁定對象(指標)。
但是,什麼是“綁定”呢?
比方說,對於下面這個程式:
#include <iostream>#include <fstream>using namespace std;int main () { ofstream ofs; ofs.open ("test.txt"); cin.tie (&ofs); //注釋掉這一行試試看 *cin.tie() << "There will be some text:"; //等同於 ofs << "There will be some text"; char c; while(cin >> c){ ofs << c; } ofs.close(); return 0;}
用linux下watch命令(windows下還不知道有沒有什麼類似的東西,如果沒有就用本辦法:手動關掉再開啟)即時察看test.txt檔案,會發現每當你在終端裡敲幾個字後按下斷行符號,test.txt檔案裡的文字就多了幾個。
而如果你將代碼中標註的那一行注釋掉,就會發現,test.txt只有在程式運行結束(linux下按ctrl+d,windows下是ctrl+z結束輸入)後才會有東西出現。
這就是“綁定”的效果,每當被“綁定”的對象有出入或輸出操作,就會自動重新整理“綁定”的對象的緩衝區,以達到即時的效果
(轉)C++的tie()函數