将有汉字的字符串格式化成某长度的行
来源:互联网 发布:java鱼雷和烈风马德里 编辑:程序博客网 时间:2024/04/30 05:24
//需求:要打印一个char型汉字和字符的混合的字符串,每行打印40个字节,若第40个字符刚好是汉字的第一个字节,则不能在该处截断
//原理:char 字符串中,一个汉字会占两个字节,高位字节和低位字节,高位字节的第一位会是1,即将之转换成16进制,它会>= 0x80
//以下是代码
char szADInfo[1024] = “汉字内容English汉字内容English汉字内容English汉字内容English汉字内容English汉字内容English”;
char szFormatedAD[1024];
memset(szFormatedAD, 0, sizeof(szFormatedAD));
//此处算法防止汉字在第40个时被截断
int iPos = 0;
for (int i=0; i<iLen; )
{
if(((unsigned char)szADInfo[i] >= 0x80) && (szADInfo[i+1]))
{
if ((iPos+1)%40 == 0)
{
szFormatedAD[iPos] = ' ';
++iPos;
}
else
{
szFormatedAD[iPos] = szADInfo[i];
szFormatedAD[iPos+1] = szADInfo[i+1];
iPos += 2;
i += 2;
}
}
else
{
szFormatedAD[iPos] = szADInfo[i];
++iPos;
++i;
}
}
//格式化后的szFormatedAD字符串就可以进行第行40个字符地截断而不会打印出乱码了
//当然,此算法还可以简化,例如利用memcpy功能,只是些处要处理的原始字符串不长,分段也可能40的长度,我就省了点脑细胞~~
- 将有汉字的字符串格式化成某长度的行
- Linux下将整数格式化成二进制表示的字符串
- 将输入的20041219等的数字字符串等格式化成日期型
- indent工具,将代码格式化成内核代码的格式
- 将数字格式化成货币字符串
- 使用FormatDataLibsvm.xls将数据格式化成SVM需要的格式
- fastjson将对象格式化成json时的两个问题
- 将给定的字符串与给定的长度的汉字字符串两端对齐
- 把数字格式化成带有分号的字符串
- Java将对象系列化成十六进制的字符串以及将十六机制的字符串反序列化成对象
- 计算含有汉字的字符串的长度
- 统计字符串的长度(带汉字)
- 编程计算含有汉字的字符串长度
- c#获取带有汉字的字符串长度
- c#获取带有汉字的字符串长度
- IOS将后台提供的时间戳格式化成可读的时间格式
- 将时间格式化成字符串共同函数暂存
- js时间格式化成自定义的格式
- 第四章:进程-第一节
- unixODBC安装(mysql Ubuntu)
- 关于SVN Hooks(钩子)的使用 (1)
- 两个服务器上的两个数据库表进行关联查询(显示列表)
- 生活如此單純
- 将有汉字的字符串格式化成某长度的行
- XMLHttpRequest 异步处理Url的典型应用
- 消息队列管理器抽象工厂
- Ext的grid列宽自动调整问题解决方案
- 通过P3P协议,实现跨域set cookie,解决同域IFRAME中SESSION传递失效问题
- 在D3D中绘制一个三角形的一个完整过程(学习3D游戏笔记一)
- hql select from 与 from 的区别
- 16. 复合主键映射
- 实现业务系统中的用户权限管理--设计篇