• (转载)wchar_t类型和char类型变量相互转换


    转载连接:https://www.cnblogs.com/zhangdewang/p/11420410.html和https://www.cnblogs.com/lanhaicode/p/10574260.html

    一、窄字符char与宽字符wchar_t的区别

      (1)窄字符char,占1个字节

      char的范围有两种:

      signed char:带符号,取值范围(-128-127);

      unsigned char:不带符号,取值范围(0-255)。

      赋值方法: 

    char cStr[20] = "Hello world!";

      (2)宽字符wchar_t ,占2个字节

      wchar_t是Unicode字符的数据类型,它实际定义为:

    typedef unsigned short wchar_t;

      赋值方法:

    wchar_t wcStr[20] = L"Hello world!";

      窄字符相比,前面多了一个大写的L这个L的作用就是告诉编译器,这个字符串按照宽字符来存储(一个字符占两个字节)。

    二、宽字符wchar_t和窄字符char相互转换

     (1)窄字节转换成宽字节

      描述

      C 库函数 size_t mbstowcs(schar_t *pwcs, const char *str, size_t n) 把参数 str 所指向的多字节字符的字符串转换为参数 pwcs 所指向的数组。

      声明

        下面是 mbstowcs() 函数的声明。

    size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)

      参数

    • pwcs -- 指向一个 wchar_t 元素的数组,数组长度足以存储一个最大字符长度的宽字符串。
    • str -- 要被转换的多字节字符字符串。
    • n -- 要被转换的最大字符数。

      返回值

      该函数返回转换的字符数,不包括结尾的空字符。如果遇到一个无效的多字节字符,则返回 -1 值。

      (2)宽字节转换成窄字节

      描述

      C 库函数 size_t wcstombs(char *str, const wchar_t *pwcs, size_t n) 把宽字符字符串 pwcs 转换为一个 str 开始的多字节字符串。最多会有 n个字节被写入 str 中。

      声明

      下面是 wcstombs() 函数的声明。

    size_t wcstombs(char *str, const wchar_t *pwcs, size_t n)

      参数

    • str -- 指向一个 char 元素的数组,至少有 n 字节长。
    • pwcs -- 要被转换的宽字符字符串。
    • n -- 要被写入到 str 中的最大字节数。

      返回值

      该函数返回转换和写入到 str 中的字节数,不包括结尾的空字符。如果遇到一个无效的多字节字符,则返回 -1 值。

    三、宽字符wchar_t的使用方法

    函数名 函数原型 函数功能 返回值
    wcscat wchar_t *wcscat(wchar_t *s1, const wchar_t *s2);

    将s2所指示的字符串连接到s1后面 

    s1所指字符串的首地址 
    wcschr wchar_t *wcschr(const wchar_t *s, wchar_t c);

     在s字符串中找到c字符第一次出现的位置

    若找到返回该字符的地址,否则返回NULL 
    wcscmp int wcscmp(const wchar_t *s1, const wchar_t *s2); 让字符串s1与字符串s2进行比较  s1<s2,返回负数;s1 == s2,返回0;s1 > s2返回正数 
    wcscpy wchar_t *wcscpy(wchar_t *s1, const wchar_t *s2);  将s2所指字符串覆盖方式复制到s1中 s1所指字符串的首地址 
    wcslen size_t wcslen(const wchar_t *s);  求s所指字符串的长度 返回有效字符的个数 
    wcsstr wchar_t *wcsstr(const wchar_t *s1, const wchar_t *s2);  找出字符串s2在字符串s1中第一次出现的位置 若找到返回该位置的地址,否则返回NULL 
  • 相关阅读:
    @@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT的辨析
    Blue Jeans[poj3080]题解
    绿色通道题解
    后缀数组
    Power Strings[poj2406]题解
    KMP算法
    Life Forms[poj3294]题解
    STM32固件库文件编程结构思想的理解
    GPIO设置
    HTML_v2
  • 原文地址:https://www.cnblogs.com/wenhao-Web/p/12167470.html
Copyright © 2020-2023  润新知