• 宽字符


    1.宽字符是为了解决国际化,英文软件写好后,要发行到不同的国家,这时就需要使用宽字符,宽字符能把汉字当成一个字符。

    2.字符集

      <1>多字节字符集  (窄字符)

      <2>Unicode字符集(用来解决国际化)(宽字符)

    3.MessageBox    MessageBox引用了windows.h文件。

    • 宽字符与窄字符的区别:窄字符1字节,窄字符2字节。
    • MessageBox这个函数与 设置有关,默认是unicode,这个设置应该只影响MessageBox函数吧。
    • 宽字符有一个宏指令  L(常量宽字符的标识符),加上它就代表宽字符。

    char ch = 'A';  

    wchar_r ch1 = L‘A’;

    printf("%d%d",sizeof()sizeof(wchar_t));  结果:1和2

    printf("%d%d",sizeof(ch)sizeof(ch1));  结果:1和2

    printf("%d",sizeof("1我"));   占4个字节,1,我

    printf("%d",sizeof(L"1我"));  占6个字节,1,我 各占一个字符;,占2个字节

    系统设置unicode,需要宽字符  MessageBox(0, L"你好",L“大家好”,0); 运行成功,无乱码

    系统设置为多字节字符集  MessageBox(0,"你好","大家好",0);  运行成功,无乱码

    MessageBoxA代表调用窄字符

    MessageBoxW就表示调用宽字符,想要打印出上面的东西就需要加L了。

    当你在程序里设置为BoxA或BoxW那就不用管系统设置了什么,就是看A或W了

    为了移植,windows提供了一种自定义的宏TEXT,可以让Message正常工作,自动调整为与编译器设置相同的。

    MessageBox(0,TEXT(“你好”),TEXT("大家好"),0)

    4.本地化(没有调windows情况下,写一个纯C应用程序,这是需要对宽字符有一个了解)

    窄字符也可以显示汉字,但是他处理汉字时,不能把汉字当做一个一个字符来处理

    char str[10] = ""
    printf("%s",str);
    //窄字符显示汉字 pirntf(
    " %c%c",str[0],str[1]); //这时都会打印出‘我’,pirntf(" %c %c",str[0],str[1])在%c之间插入空格,就显示不出来了

    包含头文件locale.h
    setlocale(LC_ALL,"zh-CN");  //没有这个下面的汉字显示的是乱码。LC_ALL表全部生效
    wchar_t wstr[10] = L"1234我是好人";  //宽字符用wprintf,显示英文
    wprintf(L"%ls",wstr);  //L,l都表示宽字符处理
    显示英文不需要本地化,显示中文需要本地化。

    宽字符,窄字符对原来的英文没有变化,只是换了一个大盒子来装它。

    5.

    char ch = 'A';
    wchar_t wch = L‘A’;
    printf("%d",wch);    //在这里打印的只还是65,宽字符就好像是拿一个大盒子去装它,
    //并没有对原来字符产生任何改变。
  • 相关阅读:
    Mysql 时间字段(加上或者减去一段时间)
    awk数组与语法
    awk模块、变量、执行
    awk简介与表达式实例
    图数据库
    推荐几款优秀的开源博客系统
    红黑树
    用户画像基础概念
    Panda Global获悉,美国承诺4年内明确区块链数字资产监管方式!
    重庆聚焦区块链应用,Panda Global觉得春天真的来了!
  • 原文地址:https://www.cnblogs.com/sjxbg/p/5536762.html
Copyright © 2020-2023  润新知