#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> #include <windows.h> #include <locale.h> void main() { char str[10] = "你好天朝"; //scanf(""); printf("%s\n",str); // 可以正常输出 wchar_t ch = L'我'; //汉字是宽字符,2个字节,而char 只有一个字节,会发生截断事故 setlocale(LC_ALL,"chs"); wprintf(L"%wc\n", ch); // 直接打印会出事故的 printf("\n"); //printf("%c%c\n", str[0], str[1]); //这样可以输出一个汉字 char str2[100] = "我是一个好鸟ABC"; //此中,两个字符表示一个汉字,不利于检索啊,最好的结果是一个字符表示一个汉字 //而大家都知道,一个汉字两个字节,故,需要宽字符这种类型,它应运而生了 printf("%s\n", str2); wchar_t str1[100] = L"我是一个好鸟ABC"; // 宽字符这个杂种 出生了 wprintf(L"%s\n", str1); //wprintf(L"%ws\n", str1); // %ws也是可以的呢 wchar_t ch1 = L'我'; wchar_t ch2 = L'是'; wchar_t ch3 = L'小'; wchar_t ch4 = L'黑'; wchar_t ch5 = L'娃'; wprintf(L"%wc%wc%wc%wc%wc\n", ch1, ch2, ch3, ch4, ch5); system("pause"); return ; }
// 示例2
#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> #include <windows.h> #include <locale.h> void main() { MessageBoxA(0, "A我","A哈哈哈",0); //不管平台是unicode, 还是多字节, 统一按多字节处理 ,强制使用窄字符 MessageBoxW(0, L"W我", L"W哈哈哈", 0); //不管平台是unicode,还是多字节,统一按unicode处理, 强制使用宽字符 //墙头草,随unicode,还是多字节而变化 //MessageBox(0, "我", "哈哈哈", 0); // 多字节字符时 //MessageBox(0, L"我", L"哈哈哈", 0); // unicode时 //自适应时候 MessageBox(0, TEXT("我"), TEXT("哈哈哈"), 0); system("pause"); return ; }