CString 固定格式的问题!!!!!!

超gogo 2009-07-05 12:37:14
我用CStdioFile 定义的文件 将内容存入1.txt
例如:
书名 条形码
王五六 200713456
李四 200713236

要求各个参数要对其,也就是说 不论名字是“王A” 还是“李无六七”,各个学生的学号开头是对齐的。
我通过求出书名的长
CString m1="MFC深入浅出";

int i;
if(m1.GetLength()<20)//固定为20字节
for(i=0;i<20-m1.GetLength();i++)
m1+=" ";

但是上面的代码设涉及到英文和汉字的占用字节不一样大,所以上面的方法不可行,例如
用以上代码实现会出现下面的情况
MFC深入浅出 1002365 侯捷
VC++ 10236 侯打包

请各位朋友帮忙想出一种可以固定格式的方法,实现下面的格式:
MFC深入浅出 1002365 侯捷
VC++ 10236 侯打包
...全文
29 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
超gogo 2009-07-05
  • 打赏
  • 举报
回复
可不可以不转换啊??有没有别的方法? 如果转换具体是如何做的啊?

谢谢
ahao 2009-07-05
  • 打赏
  • 举报
回复
对于"MFC深入浅出"这样的,转换成ansi形式,就可以得到字节数11了。
超gogo 2009-07-05
  • 打赏
  • 举报
回复
CStdioFile file("6.txt",CFile::modeCreate | CFile::modeWrite);
CString m1="深入浅出";

int i;
if(m1.GetLength()<20)
for(i=0;i<20-m1.GetLength();i++)
m1+=" ";
CString m2="1002365";
if(m2.GetLength()!=10)
for(i=0;i<10-m2.GetLength();i++)
m2+=" ";
CString m3="侯捷";
if(m3.GetLength()!=10)
for( i=0;i<10-m3.GetLength();i++)
m3+=" ";
CString str;
str=m1+m2+m3;
str+='\n';
file.WriteString(str);
超gogo 2009-07-05
  • 打赏
  • 举报
回复
请各位朋友帮忙想出一种可以固定格式的方法,实现下面的格式:
MFC深入浅出 1002365 王五
VC++ 23456665 刘地
超gogo 2009-07-05
  • 打赏
  • 举报
回复
刚开始没看清 不好意思 我已经恢复了 也改好了 能顺便看一下这个帖子的问题吗?

http://topic.csdn.net/u/20090705/10/df81c7b6-a987-474b-b9bb-1f144ea8ea4a.html?seed=1111740259

我主要是想得到每一行的值
ahao 2009-07-05
  • 打赏
  • 举报
回复
你看我改的代码
超gogo 2009-07-05
  • 打赏
  • 举报
回复
本人初学 不会啊??能介绍一下吗
ahao 2009-07-05
  • 打赏
  • 举报
回复
哎,我都说得很明显了啊,

for(i=0;i <20-m1.GetLength();i++)
m1+=" ";

每次循环都会重新计算m1的长度,导致你最后加的空格数少了

你应该这样:
int pad = 20-m1.GetLength();
for(i=0;i < pad;i++)
m1+=" ";
超gogo 2009-07-05
  • 打赏
  • 举报
回复
明白你的意思了 我先试一下
supconsupcon 2009-07-05
  • 打赏
  • 举报
回复
为什么不用XML???
超gogo 2009-07-05
  • 打赏
  • 举报
回复
什么问题啊?我就是让m1后面加的空格根据字符串的大小来改变啊
ahao 2009-07-05
  • 打赏
  • 举报
回复
对啊,你把问题修了不就可以用了吗?
超gogo 2009-07-05
  • 打赏
  • 举报
回复
我的是有问题的 我现在希望大家能提供一个可以用的方法 谢谢

像iostream里可以用setw 这种的
ahao 2009-07-05
  • 打赏
  • 举报
回复
我看了你一下,你现在的项目已经是Ansi了,不需要转换,但你的代码算法有问题

for(i=0;i <20-m1.GetLength();i++)
m1+=" ";

这个m1的长度每次都变化了
超gogo 2009-07-05
  • 打赏
  • 举报
回复
我先输出数字 再输入别的也会导致没有对齐

请问到底如何对齐啊?

谢谢!!!!

16,466

社区成员

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

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

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