我用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    侯打包 

解决方案 »

  1.   

    请各位朋友帮忙想出一种可以固定格式的方法,实现下面的格式: 
    MFC深入浅出  1002365     王五
    VC++        23456665   刘地
      

  2.   

    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);
      

  3.   

    对于"MFC深入浅出"这样的,转换成ansi形式,就可以得到字节数11了。
      

  4.   

    我看了你一下,你现在的项目已经是Ansi了,不需要转换,但你的代码算法有问题for(i=0;i <20-m1.GetLength();i++) 
    m1+=" "; 这个m1的长度每次都变化了
      

  5.   

    我的是有问题的  我现在希望大家能提供一个可以用的方法  谢谢像iostream里可以用setw 这种的
      

  6.   

    哎,我都说得很明显了啊,for(i=0;i <20-m1.GetLength();i++) 
       m1+=" "; 每次循环都会重新计算m1的长度,导致你最后加的空格数少了你应该这样:
    int pad = 20-m1.GetLength();
    for(i=0;i < pad;i++) 
       m1+=" "; 
      

  7.   

    刚开始没看清  不好意思  我已经恢复了 也改好了  能顺便看一下这个帖子的问题吗?http://topic.csdn.net/u/20090705/10/df81c7b6-a987-474b-b9bb-1f144ea8ea4a.html?seed=1111740259我主要是想得到每一行的值