0
// 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;
}

如果我们删除该行,我们可以获得相同的输出:

std::cin.tie (prevstr);

为什么是这样?

4

1 回答 1

1

std::cin.tie(prevstr)在您的原始代码中没有做任何事情,因为您之后没有对流执行任何操作。*std::cin.tie() << "This is inserted into the file2"打印到,stdout因为std::cin.tie(prevstr)与. 指向在您将其设置为 之前绑定到的流,即. 如果该行不存在,它将打印到文件中。std::cinstd::coutprevstrstd::cinofsstd::cout

于 2019-09-07T05:11:24.137 回答