printf() 和 fprintf() 两个函数无须特别设置便可以直接在命令行上打印出中文信息。
但使用 _ftprintf() 和 fwprintf() 函数默认不打印出中文信息时,需要在程序中如下设置:
1. 先包含 #include <locale.h> 头文件。
2. 在程序开始时使用函数 _tsetlocale(LC_CTYPE, (LPCWSTR)""); 将 C 语言全局 locale 设置为本地语言。
测试打印:
[C++] 纯文本查看 复制代码
int _tmain(int argc, _TCHAR* argv[])
{
_tsetlocale(LC_CTYPE, (LPCWSTR)"");
DWORD eMsglen;
LPTSTR lpvSysMsg;
FILE *fp = fopen("temp.txt", "r");
DWORD errNum = GetLastError();
eMsglen = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, errNum, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpvSysMsg, 0, NULL);
if (eMsglen > 0) {
_ftprintf(stderr, _T("%s\n"), lpvSysMsg);
}else {
_ftprintf (stderr, _T("Last Error Number: %d.\n"), errNum);
}
printf ("你好\n");
_ftprintf (stderr, _T("神马都是浮云\n"));
fprintf (stderr, "神马都是那个啥\n");
wprintf (L"神马啊\n");
return 0;
}
运行输出:D:\WindowsAPP\caesar\Debug>caesar.exe
系统找不到指定的文件。
你好
神马都是浮云
神马都是那个啥
神马啊 |