Category 世界杯开户

社区

C++ 语言 帖子详情 什么是宽字符?C++中为什么要定义宽字符?宽字符应用在哪里? inssuc 2006-11-10 12:12:16 是占两个字节的字符吗? 怎么定义? 用long char? 它的主要用处是什么呢?

...全文

3414 10 打赏 收藏 什么是宽字符?C++中为什么要定义宽字符?宽字符应用在哪里? 是占两个字节的字符吗? 怎么定义? 用long char? 它的主要用处是什么呢? 复制链接

扫一扫 分享 转发到动态 举报 AI 作业

写回复 配置赞助广告取 消

确 定

用AI写文章 10 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 ostrich2fly 2006-11-10 打赏举报 回复 同意 lujun5100 2006-11-10 打赏举报 回复 楼上的这篇文章不错哦,很全面 hailongchang 2006-11-10 打赏举报 回复 1 (1)Unicode或者宽字符都没有改变char数据类型在C中的定义。

(2)C中的宽字符基於wchar_t数据类型,它在几个头文件包括WCHAR.H中都有定义,如下:

typedef unsigned short wchar_t ;

因此,wchar_t数据类型与无符号短整数型相同,都是16位宽。

(3)要定义包含一个宽字符的变量,可使用下面的语句:

wchar_t c = 'A' ;

变量c是一个双字节值0x0041,是Unicode表示的字母A。(然而,因为Intel微处理器从最小的字节开始储存多字节数值,该字节实际上是以0x41、0x00的顺序保存在记忆体中。如果检查Unicode文字的电脑储存应注意这一点。)

(4)可定义指向宽字串的指针:

wchar_t * p = L"Hello!" ;

注意紧接在第一个引号前面的大写字母L(代表「long」)。这将告诉编译器该字串按宽字符保存——即每个字符占用2个字节。通常,指针变量p要占用4个字节,而字串变量需要14个字节-每个字符需要2个字节,末尾的0还需要2个字节。

(5)可以用下面的语句定义宽字符数组:

static wchar_t a[] = L"Hello!" ;

该字串也需要14个字节的储存空间,sizeof (a) 将返回14。索引数组a可得到单独的字符。a[1] 的值是宽字符「e」,或者0x0065。第一个引号和L两个符号之间必须没有空格。L使编译器将字串存为每个字符2字节。

(6)可在单个字符文字前面使用L字首,来表示它们应解释为宽字符。如下所示:

wchar_t c = L'A' ;

但通常这是不必要的,C编译器会对该字符进行扩充,使它成为宽字符。

2.2.3 宽字符程序库函数

strlen函数的宽字符版是wcslen(wide-character string length:宽字串长度),并且在STRING.H(其中也说明了strlen)和WCHAR.H中均有说明。strlen函数说明如下:

size_t __cdecl strlen (const char *) ;

而wcslen函数则说明如下:

size_t __cdecl wcslen (const wchar_t *) ;

要得到宽字串的长度可以调用

wchar_t * pw = L"Hello!" ;

iLength = wcslen (pw) ;

函数将返回字串中的字符数6。改成宽字节後,字串的字符长度不改变,只是字节长度改变了。

所有带有字串参数的C执行时期程序库函数都有宽字符版。例如,wprintf是printf的宽字符版。这些函数在WCHAR.H和含有标准函数说明的头文件中说明。

hailongchang 2006-11-10 打赏举报 回复 Unicode 是支持所有字符集(包括无法以单个字节表示的字符集)的规范。为国际市场编程时应考虑使用 Unicode 或多字节字符集 (MBCS),或使程序能够通过更改开关来生成支持两种字符集之一的程序。

宽字符是双字节多语言字符代码。在当今的全球计算业内使用的大多数字符(包括技术符号和特殊的发布字符),都可以根据 Unicode 规范表示为宽字符形式。无法以 1 个宽字符表示的字符可以通过 Unicode 的代理项功能以 Unicode 对表示。由于每个宽字符总是以固定的 16 位大小表示,因此使用宽字符可以简化使用国际字符集进行的编程。

宽字符字符串表示为一个 wchar_t[] 数组并由 wchar_t* 指针指向它。可以通过用字母 L 作为字符的前缀将任何 ASCII 字符表示为宽字符形式。例如,L'\0' 是终止宽(16 位)NULL 字符。同样,可以通过用字母 L 作为 ASCII 字符串的前缀 (L"Hello") 将任何 ASCII 字符串表示为宽字符字符串形式。

通常,宽字符在内存中占用的空间比多字节字符多,但处理速度更快。另外,在多字节编码中一次只能表示一个区域设置,而世界上的所有字符集都同时以 Unicode 表示形式表示。

lujun5100 2006-11-10 打赏举报 回复 应该跟中文有关 inssuc 2006-11-10 打赏举报 回复 试验了下long char lc=L'a'不行,char lc=L'a'可以,用后面这句就算定义了一个宽字符吗? inssuc 2006-11-10 打赏举报 回复 谢谢楼上,标准库的问题我再多看看再说 结贴 hailongchang 2006-11-10 打赏举报 回复 #include

using namespace std;

void main()

{

wchar_t lc=L'A';

wcout<

} inssuc 2006-11-10 打赏举报 回复 上面所措了应该是"C++保留了C的标准库" inssuc 2006-11-10 打赏举报 回复 我在VC6.0下写了下面的程序:

#include

using namespace std;

void main()

{

wchar_t lc=L'A';

cout<

}

结果是屏幕上打出65,我想这个应该是cout输出时候并没按照wchar的格式输出.请问谁知道wchar一般如何输出? 还有个问题是wchar在C++标准类库里哪里定义的(我认为上面的程序里wchar_t这样的定义方式是C++保留了C的风格,那么C++自己的库如何使用宽字符?)? 电力电子中三相PWM整流器虚拟磁链定向控制仿真与参数优化 内容概要:文章基于Simulink仿真平台,详细解析了三相电压型PWM整流器的虚拟磁链定向控制策略,涵盖系统拓扑结构、坐标变换、双闭环控制(电压外环与电流内环)、SVPWM调制及关键参数整定方法。通过虚拟磁链算法替代传统电网电压传感器实现定向,提升了系统抗扰能力,并实现了单位功率因数、低电流THD(<5%)、小输出电压纹波(<1%)和快速动态响应(0.1s稳定)的高性能控制目标。

适合人群:电力电子、电气工程及其自动化等相关专业的研究人员、研究生及从事变流器控制开发的工程师。

使用场景及目标:①掌握虚拟磁链定向控制原理及其在三相PWM整流器中的实现;②学习双闭环PI参数整定技巧与SVPWM调制配置;③优化系统性能指标如THD、功率因数和电压稳定性。

阅读建议:结合Simulink模型分模块理解控制框图(如坐标变换、控制环路、SVPWM),重点关注积分限幅、PI参数匹配、死区设置等工程细节,仿真时采用固定步长以避免数值震荡。

基于安卓的项目(测试).zip 基于安卓的项目(测试).zip 项目管理课程安卓客户端.zip 项目管理课程安卓客户端.zip 【STM32H5信息安全培训课程】 5.1 SecureManager_hands-on_Demo_SMAK.pdf 【STM32H5信息安全培训课程】 5.1 SecureManager_hands-on_Demo_SMAK.pdf jenkins 自动化构建安卓项目测试.zip jenkins 自动化构建安卓项目测试.zip

C++ 语言

65,197

社区成员

250,524

社区内容

发帖 与我相关 我的任务 C++ 语言 C++ 语言相关问题讨论,技术干货分享,前沿动态等 复制链接

扫一扫 分享 确定 社区描述 C++ 语言相关问题讨论,技术干货分享,前沿动态等 c++ 技术论坛(原bbs) 社区管理员

加入社区

获取链接或二维码

近7日

近30日

至今

加载中

查看更多榜单

社区公告

请不要发布与C++技术无关的贴子请不要发布与技术无关的招聘、广告的帖子请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧

+ 用AI写文章

top
Copyright © 2088 世界杯四强_世界杯裁判 - tylwn.com All Rights Reserved.
友情链接