关于宽字符拷贝的问题!求指点

rushdown2012 2013-06-04 10:08:14

wchar_t s_filename[256];
wchar_t* wp = entry.entryName;
int ii = 0;
do
{
s_filename[ii++] = (u8)*wp;
}
while( *wp++ );

在写一个宽字符拷贝的时候出现一个问题,上诉代码,如果wchar_t* wp = L"abdef";则拷贝出来的数据正确,
但是如果wchar_t wp = L"我是中国人";拷贝出来的数据就错了。wcscpy当然可以正确拷贝,我只是不太明白问题出在哪里,求大神指点
...全文
155 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
图灵狗 2013-06-04
  • 打赏
  • 举报
回复
我这里很正常啊:

#include <wchar.h>
#include <stdio.h>
 
int main(void)
{
	wchar_t s_filename[256];
	wchar_t* wp = L"我是中国人";
	int ii = 0;

	do{
		s_filename[ii++] = *wp;
	}while(*wp++);

	return 0;
}
引用 4 楼 rushdown2012 的回复:
[quote=引用 3 楼 turingo 的回复:] 整个逻辑上没什么问题,改一条语句为s_filename[ii++] = *wp即可,因为你限定为u8的话,相当于去掉了高字节,英文不受影响,而汉字就会不正确的。
是去掉了高字节还是拆开了?我发现如果是4个宽字符的话拷贝次数不止4次[/quote]
rushdown2012 2013-06-04
  • 打赏
  • 举报
回复
引用 3 楼 turingo 的回复:
整个逻辑上没什么问题,改一条语句为s_filename[ii++] = *wp即可,因为你限定为u8的话,相当于去掉了高字节,英文不受影响,而汉字就会不正确的。
是去掉了高字节还是拆开了?我发现如果是4个宽字符的话拷贝次数不止4次
图灵狗 2013-06-04
  • 打赏
  • 举报
回复
整个逻辑上没什么问题,改一条语句为s_filename[ii++] = *wp即可,因为你限定为u8的话,相当于去掉了高字节,英文不受影响,而汉字就会不正确的。
starytx 2013-06-04
  • 打赏
  • 举报
回复
汉字是双字节编码,不能这样搞
rushdown2012 2013-06-04
  • 打赏
  • 举报
回复
顶一个顶一个!~

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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