C++ 如何打印所有语言的std::system\u error what()

C++ 如何打印所有语言的std::system\u error what(),c++,windows-console,C++,Windows Console,当从Windows控制台应用程序打印what()时,它可以用英语工作,但运行时使用韩语。例如,输出都是问号,如: "?????? ???????????????." 下面的代码是我尝试过的 #include <iostream> #include <windows.h> int wmain(void) { try { throw std::system_error(ERROR_ACCESS_DENIED, std::system_category())

当从Windows控制台应用程序打印
what()
时,它可以用英语工作,但运行时使用韩语。例如,输出都是问号,如:

"?????? ???????????????."
下面的代码是我尝试过的

#include <iostream>
#include <windows.h>

int wmain(void)
{
  try
  {
    throw std::system_error(ERROR_ACCESS_DENIED, std::system_category());
  }

  catch (const std::system_error &e)
  {
    std::wcout << e.what() << std::endl;
  }

  return(0);
}
#包括
#包括
int wmain(无效)
{
尝试
{
抛出std::system_error(error_ACCESS_DENIED,std::system_category());
}
捕获(常数标准::系统错误和e)
{

std::wcout您希望它被翻译吗?这就是问题所在吗?您的操作系统的区域设置和区域设置设置是否正确?您是否尝试过打印(窄字符)字符串使用
std::cout
?并且Windows控制台在历史上通常不太好,例如UTF-8编码的输出。您的控制台窗口可能没有相应的字体可以用韩文打印。请注意,控制台在命令提示符下正确显示韩文字体。我查看了what()的实现这可能提供了一个线索。它使用FormatMessageW后跟WideCharToMultiByte(CP_ACP,…)。您希望它被翻译吗?这是问题吗?您的操作系统的区域设置和区域设置设置是否正确?您是否尝试过打印(窄字符)字符串使用
std::cout
?并且Windows控制台在历史上通常不太好,例如UTF-8编码的输出。您的控制台窗口可能没有相应的字体可以用韩文打印。请注意,控制台在命令提示符下正确显示韩文字体。我查看了what()的实现这可能提供了一个线索。它使用FormatMessageW,后跟WideChartMultiByte(CP_ACP,…)。