wprintf输出中文

标签: , ,

虽然一直知道有wprintf这个函数,但是一直很少用到,今天才发现wprintf居然不能直接输出中文,坑爹啊,w不是宽字符么?

要想输出中文的话还要在调用wprintf之前先调用setlocale设置区域:

#include <stdio.h>
#include <locale.h>

int main()
{
    wchar_t s[] = L"中文";
    setlocale(LC_CTYPE, "");
    wprintf(L"%s\n", s);
    return 0;
}

用OllyDbg简单跟了一下msvcrt.dll中的wprintf,发现居然会根据当前区域设置用WideCharToMultiByte把wchar_t转成char再WriteFile输出,直接WriteConsoleW不更省事?

以上内容仅限于微软的wprintf实现,其他平台和编译器未做测试。

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. 开机弹出脚本错误对话框
  2. VBS创建正则表达式对象的两种方法
  3. NDS上的SFC模拟器SNEmulDS
  4. VeryPDF CHM to PDF Converter 2.0 注册码
  5. 一个复杂的VBS脚本问题——变量的变量

留下回复