转载连接: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[] = "Hello world!";

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

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

typedef unsigned short wchar_t;

  赋值方法:

wchar_t wcStr[] = 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 

(转载)wchar_t类型和char类型变量相互转换的更多相关文章

  1. C#枚举类型和int类型相互转换

    C#枚举类型和int类型相互转换 C# 枚举(Enum) 枚举是一组命名整型常量.枚举类型是使用 enum 关键字声明的. C# 枚举是值数据类型.换句话说,枚举包含自己的值,且不能继承或传递继承. ...

  2. int类型和char类型的区别

    下面三个定义式的区别: int i = 1; char i = 1; char i = '1'; int用来定义整型变量,char用来定义字符型变量,要清楚的知道三个定义式的区别,可以比较它们在内存中 ...

  3. C# string类型和byte[]类型相互转换

    string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转成string: ...

  4. C++ unordered_map 在key为string类型和char*类型时测试时间性能差异

    测试系统liunx centos6.5 代码如下 #include <string.h> #include <sstream> #include <list> #i ...

  5. Java Blob类型和String类型相互转换

    1.String 转 Blob: String content = "Hello World!"; Blob blob = Hibernate.createBlob(content ...

  6. AngularJs:String类型和JSON相互转换

    最近一周做了一个页面,制作的过程中遇到各种问题,从中可以看出本人的js基础还不够扎实,angularjs也只是刚入门的水平,现在将制作过程中遇到的问题一一汇总,方便以后查阅. 一.String类型和J ...

  7. Java数据类型和MySql数据类型对应一览

    类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N ...

  8. Java中的基本类型和引用类型变量的区别

    Java中的基本类型和引用类型变量的区别   学了一年多,说实话你要我说这些东西我是真说不出来是啥意思     基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. 引用类型: ...

  9. MySQL中Decimal类型和Float Double的区别 & BigDecimal与Double使用场景

    MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...

随机推荐

  1. Ubuntu 解决TXT文本乱码问题

    只要依次在终端输入这两行指令即可: gsettings set org.gnome.gedit.preferences.encodings auto-detected "['GB18030' ...

  2. windows XAMPP下安装mongoDB

    1.下载 下载地址:http://www.mongodb.org/downloads 2.安装 进入cmd第一步:D:\xampp\mongodb\bin\mongod.exe --dbpath=D: ...

  3. c++类的创建与使用

    c++类的创建与使用 前言: 之前一直对c++的类的创建与使用不太熟悉,有些概念还是有点模糊,借着这次休息的机会整理一下对应是知识点.如有不正确的地方还希望各位读者批评指正. 一.C++中public ...

  4. Vuex踩坑--数据刷新时丢失

    近期做项目的过程中,使用vuex保存页面公共数据,测试无网情况后又接通网络的情况下,页面进行重新加载.遇到一个小bug——发现在苹果手机IOS系统下,页面刷新重新加载后页面中通过vuex存储并显示的数 ...

  5. (2)LoraWAN:Lora LMIC library 编程模型及API

    二.LMIC library 编程模型及API LMiC库可以通过一组API函数(API functions),运行时函数(run-time functions),回调函数(callback func ...

  6. 28 最小的K个数

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,.   思路: 解法1:对于小规模数据,可以采用类似前题的快速排序思路 ...

  7. Day9 - H - 最少拦截系统 HDU - 1257

    某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于 ...

  8. Day4-A-最短路 HDU2544

    在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助 ...

  9. 图的Prim,Kruskal,Dijkstra,Floyd算法

    代码部分有点问题,具体算法没问题, 最近期末考,要过段时间才会修改 //邻接矩阵,具体情况看上一篇的图的实现template<class T>class MGraph {public:   ...

  10. 用绿色版TOMCAT和绿色版JDK安装一个WEB服务器

    (1) 使用绿色版本JDK,解压到一个目录上D:\jdk1.6.   (2) 使用绿色版本Tomcat,解压到另一个目录上D:\jdk1.6\tomcat5.5 只要在bat文件D:\tomcat5. ...