char到wchar的转换实质

本文探讨了C/C++中char到wchar_t的转换,强调了字符在程序文件和内存中的表示一致性。介绍了本地化策略集(locale)和编译器如何处理不同编码,以及宽字符wchar_t在不同系统中的表示。在Windows和Linux环境下,编译器对源文件编码和宽字符串编码的处理方式有所不同,可能导致编码问题。
摘要由CSDN通过智能技术生成
1、从char到wchar_t


“这个问题比你想象中复杂”

从字符到整数

char 是一种整数类型,这句话的含义是,char所能表示的字符在C/C++中都是整数类型。好,接下来,很多文章就会举出一个典型例子,比如,'a'的数值就是0x61。这种说法对吗?如果你细心的读过K&R和BS对于C和C++描述的原著,你就会马上反驳道,0x61只是'a'的ASCII值,并没有任何规定C/C++的char值必须对应ASCII。C/C++甚至没有规定char占几位,只是规定了sizeof(char)等于1。
当然,目前大部分情况下,char是8位的,并且,在ASCII范围内的值,与ASCII对应。

本地化策略集(locale)

“将 'a'翻译成0x61的整数值”,“将ASCII范围内的编码与char的整数值对应起来”,类似这样的规定,是特定系统和特定编译器制定的,C/C++ 中有个特定的名词来描述这种规定的集合:本地化策略集(locale。也有翻译成“现场”)。而翻译——也就是代码转换(codecvt)只是这个集合中的一个,C++中定义为策略(facet。也有翻译为“刻面”)

C/C++的编译策略

“本地化策略集”是个很好的概念,可惜在字符和字符串这个层面上,C/C++并不使用(C+&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值