C语言11-宽字符

宽字符

Unicode字符集设置

Unicode字符集需要宽字符,因此需要加宏指令L

#include
#include

void main()
{
    MessageBox(0,L"你好天朝",L"你好世界",0);
}

占用内存长度

代码如下:

#include
#include

void main()
{
    // char占1个字节
    char ch = 'A';
    // wchar_t占2个字节
    wchar_t ch1 = L'0';
    printf("%d",sizeof(ch),sizeof(ch1))
}

输出如下:

1,2

MessageBox

MessageBox可以根据入参决定以宽字符解析还是以窄字符解析

#include
#include

void main()
{
    MessageBox(0,"你好世界","我是",0); //在以Unicode字符集显示时会乱码,此时需修改项目字符集为多字节字符集
    MessageBox(0,L"你好世界",L"我是",0); //在以Unicode字符集显示时不会乱码,因为已经作为宽字符来处理
}

MessageBoxA默认以窄字符来处理

#include
#include

void main()
{
    MessageBoxA(0,"你好世界","我是",0);
}

MessageBoxW 默认以宽字符来处理

#include
#include

void main()
{
    MessageBoxB(0,L"你好世界",L"我是",0);
}

MessageBox以TEXT兼容

#include
#include

void main()
{
    MessageBox(0,TEXT("你好世界"),TEXT("我是"),0);
}

宽字符处理

以窄字符处理宽字符

#include

void main()
{
	char ch[20] = "我";
	printf("%c%c",ch[0],ch[1]);
}

宽字符打印

#include
#include //本地化

void main()
{
	wchar_t wstr[10] = L"1234"; //宽字符用wprintf打印,显示英文
    // 显示中文需要进行本地化操作,引入locale头文件,并进行setlocale操作
    setlocale(LC_ALL,"zh-CN");
	wprintf(L"%ls",wstr);
}

宽字符和窄字符对于原有的英文没有变化

#include

void main()
{
	wchar_t wch = L'A';
	// 输出仍为65
	printf("%d",wch);

}

你可能感兴趣的:(C语言入门,c语言,开发语言)