如何在c++中检查std::cout是否被重定向到文件
How can I check in C++ whether std::cout is redirected to a file?
我需要我的程序表现不同,这取决于输出是到终端还是到文件。我如何在c++中发现这一点?
我认为不存在适用于所有操作系统的解决方案。出于我的目的,最好有一个在Windows下工作的策略和一个在linux/unix下工作的策略。
这将有助于在linux下:如何判断是在linux控制台运行还是在ssh会话中运行?
是的,它是一个C调用,但它绝对可以从c++调用。
GetStdHandle在windows下给出了类似的起始点:
相关文章:
- 错误:在尝试检测 std::cout 是否<< t 时,功能强制转换为数组类型;有效
- 使用 std::addressof(std::cout) 而不是 &std::cout 是否有任何风险?
- 是否可以为 std::cout 创建别名?
- 是否可以在每次使用std::cout时执行一个函数
- 对于输出,std::copy是否比std::cout快
- 在C++中是否有一种既定的 cout 替代方案,其行为类似于 qDebug?
- 是否可以通过与EasyLogging 相同的方式来创建一个C 类,以模仿STD :: COUT语法
- cout.put() 是否推荐使用 cout<< 打印字符
- cout 是否保证具有 ctype<char> 刻面?
- o是否可以将"cout"重定向到文件中?
- C++中是否已经有一些类可以打印到 cout,但在未定义某些宏时可以关闭(例如 DEBUG)
- 如何检查输出流是否为 std::cout in C++
- printf() 是否将其参数转换为像 cout 这样的字符串
- 两个调用 cout 的效率是否低于一个
- 是否可以在不覆盖输入中的当前文本的情况下进行 cout
- 在所有 cout 写入 consol 之前,main() 是否可以返回
- std::cout 是否有返回值
- C++ 如何查找下一个字符 std::cout 是否位于控制台行的开头
- 是否可以将 cout 或 fout 传递给函数
- std::cout 是否在堆栈上完全运行