字符串 中有汉字用Format 为什么对不齐??

ponydph 2014-07-24 09:11:20

CString strA,strB,strC,strD;
CString sInfo;

//还用这个进行 格式化,其中较长字符使用左对齐
sInfo.Format("%s (%-30s) ( %-30s) %s ",strA,strB,strC,strD);

用上面的格式化添加到listbox中
第一行
编号1 (内容名称 ) (项目内容2 ) (。。。。。)
编号1 (内容名称内容2 ) (项目内容2 ) (。。。。。)

如上所述 预留的20字符宽度已经足够 汉字长度使用 为什么第2行的内容还会 往后面挤呢???
如何实现下面的格式呢??
编号1 (内容名称 ) (项目内容2 ) (。。。。。)
编号1 (内容名称内容2 ) (项目内容2 ) (。。。。。)
...全文
557 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2014-07-28
  • 打赏
  • 举报
回复
你需要转换成ansi,再对齐,再转换成unicode。
lx624909677 2014-07-27
  • 打赏
  • 举报
回复
format只是格式化一个流,其他的不管。。和printf一样
ponydph 2014-07-26
  • 打赏
  • 举报
回复
引用 7 楼 diplopod 的回复:
试下“宋体”, 似乎是等宽的。
测试后 发现可以
ponydph 2014-07-26
  • 打赏
  • 举报
回复
测试一下
引用 6 楼 HandanXiaoliang 的回复:
Format并不计算字符串长度,如果想对其的话 ,得用 dc.GetTextExtent().cx 计算长度,然后补齐空格
格式化输出的时候,是没有办法自动不起空格的,只有靠格式化 %s方式
lis2012 2014-07-25
  • 打赏
  • 举报
回复
引用 2 楼 ponydph 的回复:
[quote=引用 1 楼 lis2012 的回复:] sInfo.Format("%s (%-30s) ( %-30s) %s ",strA,strB,strC,strD);会把你的内容插入到其中,根据你的内容长度进度进行后移,如果你的插入的内容长度不同,那么就不能对齐,如果想对齐,最好自己根据内容的实际长度来添加空格(控制对齐位置)来组合字符串
多谢 ,这个长度是从数据库取出的,长度并不固定,如何能够自己来组合对齐位置呢???? 动态??[/quote] 对的,数据都能读取出来了,长度就能知道,自己动态计算出来相应位置就好了,前提就是不要出现特别长的字段
躺着睡的蜗牛 2014-07-25
  • 打赏
  • 举报
回复
试下“宋体”, 似乎是等宽的。
HandanXiaoliang 2014-07-25
  • 打赏
  • 举报
回复
Format并不计算字符串长度,如果想对其的话 ,得用 dc.GetTextExtent().cx 计算长度,然后补齐空格
阿呆_ 2014-07-24
  • 打赏
  • 举报
回复
应该是字体的问题,默认字体的空格比普通字符窄。使用字符等宽的字体设置listbox。
ponydph 2014-07-24
  • 打赏
  • 举报
回复
引用 1 楼 lis2012 的回复:
sInfo.Format("%s (%-30s) ( %-30s) %s ",strA,strB,strC,strD);会把你的内容插入到其中,根据你的内容长度进度进行后移,如果你的插入的内容长度不同,那么就不能对齐,如果想对齐,最好自己根据内容的实际长度来添加空格(控制对齐位置)来组合字符串
多谢 ,这个长度是从数据库取出的,长度并不固定,如何能够自己来组合对齐位置呢???? 动态??
lis2012 2014-07-24
  • 打赏
  • 举报
回复
sInfo.Format("%s (%-30s) ( %-30s) %s ",strA,strB,strC,strD);会把你的内容插入到其中,根据你的内容长度进度进行后移,如果你的插入的内容长度不同,那么就不能对齐,如果想对齐,最好自己根据内容的实际长度来添加空格(控制对齐位置)来组合字符串
ponydph 2014-07-24
  • 打赏
  • 举报
回复
引用 3 楼 Idle_ 的回复:
应该是字体的问题,默认字体的空格比普通字符窄。使用字符等宽的字体设置listbox。
用什么字体呢?

16,472

社区成员

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

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

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