当前位置:  开发笔记 > 编程语言 > 正文

在C++程序中更改stdout的值

如何解决《在C++程序中更改stdout的值》经验,为你挑选了1个好方法。

我有一个Windows C++程序正在执行以下操作:

  FILE* pf = ...;
  *stdout = *pf;    // stdout is defined in stdio.h

我正在寻找一个解释,当你更改stdout文件句柄的值时会发生什么.这只是重定向标准输出的一种方式吗?

-cr



1> Adam Rosenfi..:

是的,当您更改stdout时,您实际上将其重定向到其他位置.但是,你应该不会直接分配到stdout这样.如果你想重定向stdout,你应该改用freopen().

您永远不应该直接操作FILE对象 - 您应该将它们视为不透明类型,并且只能通过库中的函数与它们进行交互.乔纳森列举了一些很好的理由.

根据C99标准,第7.19.3节,第6段:

用于控制流的FILE对象的地址可能很重要; FILE对象的副本不需要代替原始对象.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有