真不容易
#define _UNICODE
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h> int main(int argc, char *argv[])
{
setlocale(LC_ALL, "chs");
TCHAR *ca=_T("中文");
_tprintf(ca);
system("PAUSE");
return 0;
}
此外,还需要为dev cpp使用的gcc编译器添加编译参数 -fexec-charset=gbk -finput-charset=gbk
可以使用WINAPI在控制台程序输出真正的UNICODE字符串,无需设置locale
BOOL WINAPI WriteConsoleW(
__in HANDLE hConsoleOutput,
__in const VOID *lpBuffer,
__in DWORD nNumberOfCharsToWrite,
__out LPDWORD lpNumberOfCharsWritten,
__reserved LPVOID lpReserved
);
例如
#include <windows.h>
int main(int argc, char *argv[])
{
wchar_t test[] = L"测试1234";
DWORD ws;
WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE),test,wcslen(test),&ws,NULL);
system("PAUSE");
return 0;
}
蓝色部分来自文章 深入 printf / wprintf / console下的unicode output
在dev c++4.9.9.2上xp sp3测试通过
扩展阅读:浅谈C中的wprintf和宽字符显示