(转载)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[] = "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类型变量相互转换的更多相关文章
- C#枚举类型和int类型相互转换
C#枚举类型和int类型相互转换 C# 枚举(Enum) 枚举是一组命名整型常量.枚举类型是使用 enum 关键字声明的. C# 枚举是值数据类型.换句话说,枚举包含自己的值,且不能继承或传递继承. ...
- int类型和char类型的区别
下面三个定义式的区别: int i = 1; char i = 1; char i = '1'; int用来定义整型变量,char用来定义字符型变量,要清楚的知道三个定义式的区别,可以比较它们在内存中 ...
- C# string类型和byte[]类型相互转换
string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转成string: ...
- C++ unordered_map 在key为string类型和char*类型时测试时间性能差异
测试系统liunx centos6.5 代码如下 #include <string.h> #include <sstream> #include <list> #i ...
- Java Blob类型和String类型相互转换
1.String 转 Blob: String content = "Hello World!"; Blob blob = Hibernate.createBlob(content ...
- AngularJs:String类型和JSON相互转换
最近一周做了一个页面,制作的过程中遇到各种问题,从中可以看出本人的js基础还不够扎实,angularjs也只是刚入门的水平,现在将制作过程中遇到的问题一一汇总,方便以后查阅. 一.String类型和J ...
- Java数据类型和MySql数据类型对应一览
类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N ...
- Java中的基本类型和引用类型变量的区别
Java中的基本类型和引用类型变量的区别 学了一年多,说实话你要我说这些东西我是真说不出来是啥意思 基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. 引用类型: ...
- MySQL中Decimal类型和Float Double的区别 & BigDecimal与Double使用场景
MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...
随机推荐
- Ubuntu安装TTF字体
sudo mkdir /usr/share/fonts/ttf sudo cp ~/ttf/* /usr/share/fonts/ttf cd /usr/share/fonts/ttf sudo ch ...
- 揭秘autoit3的运行机制和反编译原理
今天发这个帖子的目的在于和论坛里面的朋友交流一下学习心得,主要内容是围绕着autoit3的编译原理.先开门见山的说一下结果,我不知道如何反编译au3,但相信论坛有很多高手,能解开我心中的疑团.我没有想 ...
- vue dialog每次打开会展示上一次数据(转载)
原文地址: (https://www.jianshu.com/p/82b6681d0768) 在dialog外套一层div,div中以v-if来控制组件el-dialog的出现与否,每次弹出el-di ...
- topthink/think-swoole 扩展包的使用 之 WebSocket
嗯~ o(* ̄▽ ̄*)o,没错欢迎收看继续爬坑系列233...话不多说直接开撸 今天的题材是websocket,没有特殊说明的话默认环境都和此系列第一篇文章中申明一致,此后不再赘述. websocke ...
- P1001 A+B Format
转跳点:
- osgb的顶点,纹理,索引,UV读取与存储
virtual void apply(osg::Geode& node) { ; i < node.getNumDrawables(); i++) { osg::Geometry* ge ...
- js求两个整数的百分比
function GetPercent(num, total) { num = parseFloat(num); ...
- Java自动检测文件编码(字符集)
// 使用之前请调用getAllDetectableCharsets()检查是否满足要求,中文仅有{gb18030, big5,utf-*}import com.ibm.icu.text.Charse ...
- query.locate过个过滤参数
需要引用Variants locate( 'typeid;name',vararrayof([key1,key2]),[]);
- 十一 Socket编程
一. 计算机网络: 将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来在网络操作系统.网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 二. ...