难题:将一个很长的字符串(里面可能有汉字)分解成若干个子字符串,要求任何一个子字符串中都没有乱码

hujinger 2004-08-11 04:46:58
DecodeStr(char* Script,char iScript[10][201],int Len)
上面是我的函数原型,传值给Len为201,固定长度(子字符串的最大长度)。分解成10个子字符串放在iScript数组中,每个子字符串最多201个字符。Script的长度若大于201×10,则截断掉。
有没有高手愿意帮我写一些此函数,非常感谢!!
...全文
210 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jishiping 2004-08-12
  • 打赏
  • 举报
回复
我写的那个函数,还不够全面么?你仔细看过或者试过没有?如果你没有,就请你仔细看看。
如果你觉得我的那个函数,漏了什么,可以指出来。
hujinger 2004-08-12
  • 打赏
  • 举报
回复
感觉大家都回答的不够全面。
我需要的是将一个字符串分解成若干个子串,子串长度大致相等,子串中没有乱码。当然,子串组合起来后也应该是原来的那个字符串啦!
yjy1001 2004-08-11
  • 打赏
  • 举报
回复
DecodeStr(char* Script,char iScript[10][201],int Len)

这个原形设计有问题..........

把数据存储转换为静态的,又或是全局的
jishiping 2004-08-11
  • 打赏
  • 举报
回复
void DecodeStr(LPCSTR Script, char iScript[10][201], int Len)
{
int n, num;
LPCSTR s, t;

for(n=0; n<10; n++)
iScript[n][0] = '\0';
if (Script==NULL) return;

Len--; //最后一个用来存放0字符
for(n=0; n<10 && *Script; n++) {
for(s=Script,num=0; num<Len
&& *s!=0; s=t) {
t = CharNext(s);
num += t - s;
if (num > Len) {
num -= t-s; break;
}
}
memcpy(iScript[n], Script,
num);
iScript[n][num] = '\0';
Script += num;
}
}
wuxq7311 2004-08-11
  • 打赏
  • 举报
回复
这个就象是在液晶屏里显示字符串一样!!有汉字有标点符号!呵呵~~~~~~~~
hujinger 2004-08-11
  • 打赏
  • 举报
回复
MEFULEU(没有作不到,只有想不到) delphi我也懂,可你的代码一点都不详细啊。

有没有谁肯帮忙啊?
铖邑 2004-08-11
  • 打赏
  • 举报
回复
很容易得,懒得写了,不好意思啦,顶一下先。
MEFULEU 2004-08-11
  • 打赏
  • 举报
回复
有那么一段delphi的,自己翻译去吧

for L := 1 to iCutLength do //从头到尾逐个检查,至于为什么?
begin

if bIsDBCS then //如果上一个字节是汉字的前半部分

bIsDBCS := False //则此时本字节是汉字的后半部分,

//所以将是否前半个汉字检测标志设为假

else

if Windows.IsDBCSLeadByte(byte(sCuted[L])) then

bIsDBCS := True;//否则检查本字节,并根据结果设置标志

end; //end of for

//如果最后一个字节的上一个字节是汉字的前半部分,则结束时

//检测标志为假,

if bIsDBCS then

//Dec(iCutLength);
iCutLength:=iCutLength+1;

//如果最后一个字节是汉字的前半部分, 则少截取一个字符,避免乱码

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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