这代码看不懂!!

zhuliangsu 2003-12-19 05:02:43
void TruncateChineseWithLength (char *pi_stSource, int pi_inLength, char *po_stResult)
{
int inIndex=0;
int inCount=0;
char strResult[MAXBUFFLEN *2];
char temp[3];

//memset (po_stResult, 0x00, strlen(pi_stSource));
strResult [0] = 0x00;

for(inIndex=0;inIndex<strlen(pi_stSource);inIndex++)
{
if((pi_stSource[inIndex] & 0x00000080) == 0x00000080)
{

if (inCount < (pi_inLength - 1))
{
strResult[inCount++]=pi_stSource[inIndex];
inIndex++;
strResult[inCount++]=pi_stSource[inIndex];
}
}
else
{
if (inCount < (pi_inLength))
{
strResult[inCount++]=pi_stSource[inIndex];
}
}
}

strResult[inCount] = 0x00;
memset (po_stResult, 0x00, strlen(strResult));
strcpy (po_stResult, strResult);

}

这代码看不懂!!
...全文
79 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
WuYL7812 2003-12-19
  • 打赏
  • 举报
回复
代码也没必要写的这么复杂,用memcpy就可以了
这是什么地方来的代码?
WuYL7812 2003-12-19
  • 打赏
  • 举报
回复
我工作中用的字符串是这样的
WuYL7812 2003-12-19
  • 打赏
  • 举报
回复
if((pi_stSource[inIndex] & 0x00000080) == 0x00000080)
如果第0个字节是0x80表示这个字符串是Unicode格式的,一个字符由两个字节组成,所以一次复制两个字节,否则是Ascii,一次复制一个字节,直到pi_inLength为止
但是代码没写对

hanyixin 2003-12-19
  • 打赏
  • 举报
回复

什么地方看不懂?

65,210

社区成员

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

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