c++ 输入输出流关联
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
? cout << cin.tie() ?<< endl;? //打印cin的關(guān)聯(lián)流的地址
? cout << &cout << endl;? ? //打印cout的地址
? cout << &cin << endl;? ? ? //打印地址
? cout << cout.tie() << endl;? ?//打印關(guān)聯(lián)流地址
? cout <<"tie the cerr to cout " << endl;
? cout.tie(&cerr);? ? ? ? ? ? //把cerr關(guān)聯(lián)到cout
? cout << cout.tie() << endl;? ? //打印cout的關(guān)聯(lián)流,即打印cerr的地址
? cout << &cerr <<endl;? ? ? ? ? //打印cerr的地址
? cout.tie(nullptr);? ? ? ? ? ? ? ? ? ? //徹底解開(kāi)關(guān)聯(lián)流,關(guān)聯(lián)流都被解開(kāi)了把?
? cout << "free the tie:"<<cout.tie() <<endl;? //
? cout.tie(nullptr);? ? ? ?//解開(kāi)cout 的關(guān)聯(lián)流
? cout << cout.tie() <<endl;??
? cout << "tie the new:" <<endl;
? ostream * old_tie ?= cin.tie(nullptr);? //解開(kāi)cin的掛鏈流,并且把cin原來(lái)的關(guān)聯(lián)流返回
? cout << "old value: "<< ?old_tie ?<< endl;? ? ? ? //
? cout << "now 's cin ' s tie is:" <<cin.tie()<< endl;
? ? return 0;
? }
幾個(gè)總結(jié):
(1)無(wú)論是關(guān)聯(lián)還是解開(kāi),都是被關(guān)聯(lián)的流作為主要職責(zé)。即調(diào)用tie的那個(gè)流作為主要的行使權(quán)利,它如果要其它流關(guān)聯(lián)到它,那么會(huì)調(diào)用tie函數(shù),strm.tie(& strm2)? ? ? ? ? 把strm2關(guān)聯(lián)到strm上
(2)如果要解開(kāi)流的關(guān)聯(lián),那么strm調(diào)用tie來(lái)解開(kāi)。strm.tie(nullptr)則可以了。
(3)誰(shuí)調(diào)用關(guān)聯(lián),那么誰(shuí)就調(diào)用tie(nullptr)去解開(kāi)關(guān)聯(lián)。并且這個(gè)流如果執(zhí)行,那么被關(guān)聯(lián)流strm2會(huì)首先清除緩存
?
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的c++ 输入输出流关联的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHP+MySQL能做什么?
- 下一篇: C++顺序容器之deque初探