控制台应用程序中带有Unicode字符的_tprintf

ahm*_*md0 7 c++ unicode winapi console-application

我正在从Unicode构建的控制台应用程序(使用C++和Visual Studio 2008)中执行此简单输出.此代码旨在在Windows上运行:

_tprintf(L"Some sample string\n");
Run Code Online (Sandbox Code Playgroud)

一切正常.但是如果我在那里添加一个非ASCII字符:

_tprintf(L"Some sample € string\n");
Run Code Online (Sandbox Code Playgroud)

输出到控制台的内容是该字符之前的所有内容:

一些样本

我在这做错了什么?

Cub*_*bbi 8

默认情况下,Windows控制台不处理宽字符.启用该功能的最简单方法可能是调用_setmode:

_setmode(_fileno(stdout), _O_WTEXT); 
Run Code Online (Sandbox Code Playgroud)

有关所需的包含,用法示例和其他可用模式,请参阅MSDN.