怎么判断 某个字符串 占了多少个字节呢

zdcju 2012-09-06 09:18:02
char pCh[4]={98,99,100,0};
MultiByteToWideChar(UTF7,pCh);
转换后得到字符 str;

现在我想知道 str 由几个字节构成 上述结果应该为4才正确
WideCharToMultiByte(UTF7,NULL,str,-1,NULL,0,NULL,FALSE) 返回值 作为结果
这种方法好像有时候对 少数情况下不对 不知道这么做方法对吗?
...全文
4059 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wilia 2013-11-17
  • 打赏
  • 举报
回复
上面各位大神,我在做MSComm串口通信,很模糊,望大家指导。
yyyyy_3 2012-09-07
  • 打赏
  • 举报
回复
2个function()是对的.
但len = 3.
wchar_len = 6.
  • 打赏
  • 举报
回复
结贴率101.52%
你是怎么做到的!- -
wyx100 2012-09-06
  • 打赏
  • 举报
回复
#3楼 得分:0回复于:2012-09-06 09:33:49MultiByteToWideChar 返回多少个字符数的两倍就是字节数
zdcju 2012-09-06
  • 打赏
  • 举报
回复
不知道这种思路对吗?
zdcju 2012-09-06
  • 打赏
  • 举报
回复
不是 sizeof(pCh)/sizeof(char) 这么简单
我这个程序情况比较复杂。。。。。
先查找 char pCh[4]={98,99,100,0} 的某个关键字 再得到关键字 对应 在pCh中的位置

我先 pch 转换成 cstring 得到在 cstring 中的位置后 在取关键字左面的所有字符 通过 MultiByteToWideChar 得到的位置 就认为是 关键字 在pch中对应的字符 但这样做有时候不对
傻X 2012-09-06
  • 打赏
  • 举报
回复
ATL的宏USES_CONVERSION
W2A
字符串以后\0结尾的话,strlen函数还是可以用的
Gloveing 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
引用 3 楼 的回复:

MultiByteToWideChar 返回多少个字符数的两倍就是字节数

主要我是想得到char pCh[4]={98,99,100,0}; 中 pch的个数 而不是转换出来之后 str 的字节数 这个简单 个数*2 就行了
[/Quote]
pch中的个元素个数:
sizeof(pCh)/sizeof(char)
Gloveing 2012-09-06
  • 打赏
  • 举报
回复
Return Values
If the function succeeds, and cbMultiByte is nonzero, the return value is the number of bytes written to the buffer pointed to by lpMultiByteStr. The number includes the byte for the null terminator.

If the function succeeds, and cbMultiByte is zero, the return value is the required size, in bytes, for a buffer that can receive the translated string.

If the function fails, the return value is zero. To get extended error information, call GetLastError. GetLastError may return one of the following error codes:
zdcju 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

MultiByteToWideChar 返回多少个字符数的两倍就是字节数
[/Quote]
主要我是想得到char pCh[4]={98,99,100,0}; 中 pch的个数 而不是转换出来之后 str 的字节数 这个简单 个数*2 就行了
w_xei 2012-09-06
  • 打赏
  • 举报
回复
MultiByteToWideChar 返回多少个字符数的两倍就是字节数
zdcju 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

MultiByteToWideChar(UTF7,pCh);
转换后得到字符 str;
这时字节数是8,一个字符占两个字节

WideCharToMultiByte(UTF7,NULL,str,-1,NULL,0,NULL,FALSE) 返回值 作为结果
这时返回的数据是四个字节
[/Quote]
WideCharToMultiByte(UTF7,NULL,str,-1,NULL,0,NULL,FALSE) 返回值 作为结果
但很多时候不是四个字节 当然简单的情况我都测过 有些复杂的情况(比如有好多字符的时候)返回的结果好像不对
hdg3707 2012-09-06
  • 打赏
  • 举报
回复
MultiByteToWideChar(UTF7,pCh);
转换后得到字符 str;
这时字节数是8,一个字符占两个字节

WideCharToMultiByte(UTF7,NULL,str,-1,NULL,0,NULL,FALSE) 返回值 作为结果
这时返回的数据是四个字节

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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