(轉)C++的tie()函數

來源:互聯網
上載者:User

標籤: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()函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.