gpt4 book ai didi

c++ - 有没有办法确定标准输出是否指向控制台?

转载 作者:可可西里 更新时间:2023-11-01 09:53:35 27 4
gpt4 key购买 nike

我想在 Windows 上运行的 C++ 应用程序中插入代码,以确定 stdout(或 cout)是否指向控制台,如果是,则在写出之前将字符转换为终端编码。如果不是(例如,如果写入文件或管道),字符应该单独保留。转换部分不是问题,但我想知道应用程序是否有可能知道它的标准输出是去控制台还是去其他地方。

我不确定 Windows API 函数 GetStdHandle 是否有任何帮助,或者它是否只是一种指向标准输出但无法确定有关它的任何信息的方法。同样,我不确定我们是否可以从 cout 获得任何信息来表明它是指向控制台还是其他东西。到目前为止,我还没有找到任何类似的东西。

最佳答案

在您想了解的句柄上调用 GetConsoleMode ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms683167(v=vs.85).aspx )。如果它被重定向到另一个控制台句柄以外的东西(例如文件),那么 GetConsoleMode 将失败。例如:

DWORD temp;
const BOOL success = GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), &temp);
const bool redirected = success == FALSE;

关于c++ - 有没有办法确定标准输出是否指向控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22972071/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com