VS2013关于CString转换为LPBYTE的问题

古城孤客 2019-04-22 11:12:05
CString strData = "1234abcd送检:测控技术有限公司;有效期:12个月1");

int len = strData .GetLength();
LPBYTE lpByte = new BYTE[len + 1];
int i = 0;
for (i = 0; i < len; i++)
{
lpByte[i] = (BYTE)strData [i];
}
lpByte[i] = '\0';

将CString转换为LPBYTE时,数字和英文字母OK,遇到汉子时,LPBYTE就成无效字符了
请高手指教,万分感谢
...全文
116 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tongshou 2019-04-23
  • 打赏
  • 举报
回复

把 CString 改成 CStringA 就可以了。

在UNICODE 下, CString实际上 是 CStringW

jiht594 2019-04-23
  • 打赏
  • 举报
回复
引用 3 楼 jiht594 的回复:
CString::GetString()

中文字符需要自己判断。应该大部分都是2字节。有的更长
jiht594 2019-04-23
  • 打赏
  • 举报
回复
CString::GetString()
幻夢之葉 2019-04-23
  • 打赏
  • 举报
回复
CString使用的是Unicode字符集,每一个字占用两个字节 网上搜索cstring 转 char*的代码 或者去我博客有提到这个转换
sdghchj 2019-04-23
  • 打赏
  • 举报
回复
知道字符集和字符集编码的概念么?不知道就赶紧去搜搜。 一个汉字至少是2字节以上,你以单字节去分裂存储解析当然是无效字符了。

64,662

社区成员

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

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