public member function
<ios> <iostream>

std::basic_ios::tie

get (1)
basic_ostream<char_type,traits_type>* tie() const;
set (2)
basic_ostream<char_type,traits_type>* tie (basic_ostream<char_type,traits_type>* tiestr);
获取/设置绑定的流
第一个形式(1)返回一个指向已绑定输出流的指针。

第二个形式(2)将对象与tiestr绑定,并返回调用前绑定的流的指针(如果之前有绑定)。

绑定的流是一个输出流对象,在对此流对象进行每次 i/o 操作之前会被刷新

默认情况下,cin 绑定到 coutwcin 绑定到 wcout。库的实现可能会在初始化时绑定其他标准流。
默认情况下,标准的窄字符流 cincerr 绑定到 cout,而它们对应的宽字符流(wcinwcerr)则绑定到 wcout。库的实现也可能将 clogwclog 绑定。

参数

tiestr
一个输出流对象。
char_typetraits_type 是成员类型,分别定义为第一个和第二个类模板参数的别名(参见 basic_ios types)。

返回值

指向调用前绑定的流对象的指针,如果流未绑定,则为空指针

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// redefine tied object
#include <iostream>     // std::ostream, std::cout, std::cin
#include <fstream>      // std::ofstream

int main () {
  std::ostream *prevstr;
  std::ofstream ofs;
  ofs.open ("test.txt");

  std::cout << "tie example:\n";

  *std::cin.tie() << "This is inserted into cout";
  prevstr = std::cin.tie (&ofs);
  *std::cin.tie() << "This is inserted into the file";
  std::cin.tie (prevstr);

  ofs.close();

  return 0;
}

输出

tie example:
This is inserted into cout


数据竞争

访问(1)或修改(2)流对象。
并发访问同一个流对象可能导致数据争用。

异常安全

基本保证:如果抛出异常,流处于有效状态。