社区
C语言
帖子详情
怎么比较两个WCHAR数组是否相等???
jaher
2006-06-26 01:54:43
WCHAR p[]={'A','B','C','D'};
WCHAR Buffer[]={'A','B','C','D','E'};
怎么比较它们是否相等?
我用strcmp()返回却是0,怎么回事???
...全文
2849
4
打赏
收藏
怎么比较两个WCHAR数组是否相等???
WCHAR p[]={'A','B','C','D'}; WCHAR Buffer[]={'A','B','C','D','E'}; 怎么比较它们是否相等? 我用strcmp()返回却是0,怎么回事???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jixingzhong
2006-06-27
打赏
举报
回复
WCHAR p[]={'A','B','C','D','\0'};
WCHAR Buffer[]={'A','B','C','D','E','\0'};
wcscmp 函数就可以实现你要的功能了....
问题的关键是 数组布等同于参数要求的 字符串,
没有终结字符,后面将是随机连续,
直到出现终结字符,
这样的情况下,能够符合相等基本是布可能的事情 ~
houdy
2006-06-26
打赏
举报
回复
对于组合数据类型,用memcmp()这种bitwise操作的比较函数是非常危险的,因为这里存在alignment和padding的问题。举个例子,加入有这样一个结构体:
struct A {
int i;
}A;
对于两个A结构体的数组,用memcmp来比较他们时候不会出什么问题。当我们在A中加入一个char的数据成员的时候:
struct AA {
int i;
char c;
}AA;
我们还是用memcmp来比较两个数组的时候,问题就出来了。由于要考虑对齐的问题,编译器会在结构体AA中填充3个额外的字节,这样sizeof(AA) = 8符合对齐的要求。由于填充的那三个字节在运行时是垃圾字节,他们的值是不确定的,所以在memcmp比较数组的时候,即使是数组中所有的元素都相当,用memcmp比较的接过很有可能不相等。
所以我觉得,最保险和最可靠的方法就是专门写一个函数来比较组合数据类型的数据。在C++中,我们可以重载operator = 来完成。
bruceteen
2006-06-26
打赏
举报
回复
1
无论是strcmp,还是wcscmp都不行,这两个函数要求参数是字符串,而p和Buffer只是字符数组,而不是字符串。
size_t len1 = sizeof(p)/sizeof(p[0]);
size_t len2 = sizeof(Buffer)/sizeof(p[Buffer]);
return len1==len2 && memcmp(p,Buffer,len1)==0;
rexking0
2006-06-26
打赏
举报
回复
请用wcscmp函数,你的字符串是宽字符串,要用宽字符串的函数来比较。
C++处理
两个
整数表示的字符(英文/中文/符号混合)
在这个头文件里有
两个
类:ECletter和ECletters。ECletter是一个英文/中文/符号字符(占
两个
int),支持取单独的一位int、输入输出、
比较
,支持用一个int、
两个
int、const
char
[]、w
char
_t初始化和赋值;ECletters是一个固定大小的ECletter
数组
,但有其它的功能:用一个int或
两个
int或const
char
[]或w
char
_t初始化和赋值、取大小、用下标运算符和at()返回单个ECletter、输入输出、
比较
(==和!=判断
是否
相等
,用字典序判断
是否
小于/大于/小于等于/大于等于)。还有一个typedef:typedef vector
ECletter_v; 。注意,ECletters用unsigned int模板确定大小,比如这样定义了一个大小为10的、内容全为"我"的ECletters: ECletters<10> ec_letters="我"; 。at函数有两种用法:.at
()和.at(num),其中第一种是编译期检查越界,第二种是运行期检查越界。[]运算符不检查越界。
WCSCMP.C
C标准库源码
C++ CString类
学习C++必经之路,入门级知识总结,笔记本知识概况,走一步再走一步
2023年C++知识点.doc
2023年C++知识点.doc
《C++ String 学习与研究》1.1版本 文档
《C++ String 学习与研究》是由东北大学秦皇岛分校计算机工程系大四学生董波书写的学习文档,内容涵盖了c++ String的很多内容,比如字符串的用法,和算法、流的结合,boost 字符串算法库等等。这是1.1版本。
C语言
70,036
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章