永发信息网

【200分】C/C++分割UTF8编码字符串函数

答案:5  悬赏:50  手机版
解决时间 2021-02-15 16:20
  • 提问者网友:沉默菋噵
  • 2021-02-14 17:39
【200分】C/C++分割UTF8编码字符串函数
最佳答案
  • 五星知识达人网友:佘樂
  • 2021-02-14 19:12
再补:
我的意思是.我接收的东西是"s字tr符ing串"这样的字符串呢?
抑或不是字符串,而是原始的UTF8字节流?
如果是前者,是两个字节.如果是后者......就麻烦了,还得转换.原始的UTF8字节流确实是1~6的长度的,要按照格式和规则转换.

补:
接收的是最后的字符串还是直接的UTF8字节流?
如果是转了后的字符串,应该只占两位的.

汉字都占两个字符,而且在二进制表示中,最前一位都是1
也就是1xxxxxxx
程序中值为负
就可以这样处理:遇到正的直接输出一个字符,否则连续输出两个字符
如下

#include "stdio.h"
#include "string.h"

int main(){
char str[]="s字tr符ing串";
int i;
int l=strlen(str);
for(i=0;i if(str[i]>=0){
printf("%c\n",str[i]);
}
else{
printf("%c%c\n",str[i],str[i+1]);
++i;
}
}
}
全部回答
  • 1楼网友:狂恋
  • 2021-02-14 23:43
#include
#include
#include
#define N (100000)
int display(char *ch,int n)
{
int len = n,i;
int flg =0;
if(strlen(ch) return -1;

for(i=0; i if(ch[i]>0){
flg = 0;
}
else{
flg++;
}
printf("%c",ch[i]);
}
if(ch[len-1] <0){
if(flg%2 > 0)
{
printf("%c",ch[len-1]);
return len-1;
}
}
return len;
}
void main()
{
char ch[] = "中国人abc";
int i;
display(ch,5);
}
  • 2楼网友:神也偏爱
  • 2021-02-14 22:42
这个是什么啊
  • 3楼网友:夜风逐马
  • 2021-02-14 21:18
取istr的前六个字节,就是“字符串”。汉字都是两个字节划分的。
UTF8 需要转化成gb2312的话要MultiByteToWideChar()函数
  • 4楼网友:举杯邀酒敬孤独
  • 2021-02-14 20:01
好难啊。.
我念完初中就不念了.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯