rtp*_*pax 5 c console winapi windows-console
在下面的程序中,我使用两个不同的函数打印到控制台
#include <windows.h>
int main() {
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD byteswritten;
WriteConsole(h, "WriteConsole", 12, &byteswritten, NULL);
WriteFile(h, "WriteFile", 9, &byteswritten, NULL);
}
Run Code Online (Sandbox Code Playgroud)
如果当我执行这个程序并重定向它的输出使用a > out.txtora 1> out.txt什么都没有打印到控制台(如预期的那样)但内容out.txt只是
WriteFile
Run Code Online (Sandbox Code Playgroud)
允许将调用WriteFile重定向到文件和调用WriteConsole转到...无处的两者之间有什么不同
在 Windows 10 上用 gcc 和 msvc 测试
WriteConsole 仅适用于控制台屏幕句柄,不适用于文件或管道。
如果您只编写 ASCII 内容,则可以WriteFile用于所有内容。
如果您需要编写可用于GetConsoleMode检测句柄类型的Unicode 字符,则对于不是控制台句柄的所有内容都会失败。
在执行这样的原始输出时,如果句柄被重定向到文件,您还必须处理BOM。
这篇博文是在 Windows 控制台中处理 Unicode 的一个很好的起点......
| 归档时间: |
|
| 查看次数: |
2299 次 |
| 最近记录: |