zoukankan      html  css  js  c++  java
  • (转载)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 
  • 相关阅读:
    day01--计算机硬件基础笔记
    22 Jun 18 Django,ORM
    21 Jun 18 Django,ORM
    20 Jun 18 复习, mysql
    20 Jun 18 Django,ORM
    19 Jun 18 复习, 正则表达式
    19 Jun 18 Django
    15 Jun 18 复习, shutil模块
    15 Jun 18 Django
    14 Jun 18 复习, form表单
  • 原文地址:https://www.cnblogs.com/wenhao-Web/p/12167470.html
Copyright © 2011-2022 走看看