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