我想把一个字符串按照长度分割怎么分割啊  就是我先获得了整个字符串的长度CSize sz=dc.GetTextExtent(str); 如何按照特定的长度分割啊  如我想得到长度为sz.cx=3的段字符串怎么办哪  

解决方案 »

  1.   

    dc是啥类型?
    CString的话则计算一下位置用Mid获取字串
    string的话用substr
      

  2.   

    int index=0;
    CSize sz1,sz2;
    for(int i=0; i<str.GetLength(); i++)

        if(i == str.GetLength())
        {
           index = i;
           break;
        }
        sz1=dc.GetTextExtent(str.Left(i));
        sz1=dc.GetTextExtent(str.Left(i+1));
        if(sz1 == 3 || (sz1.cx<3 && sz2.cx>3))
        {
            index = i;
            break;
        }
    }
    CString strtmp = str.Left(index);
    不知道这样行不行
      

  3.   

    str是不是CString类型?
    如果是 
    CString的 mid  就可以   mid可以截断字符串  
      

  4.   

    先确定要分多少行,再根据CSize sz=dc.GetTextExtent(str)求出来的总长度除以行数算出每行平均长度。
    逐个字符增加,每次增加都计算GetTextExtent,直到大于平均长度,再减掉一个字符也计算一个长度,哪个和平均值靠近就用哪个(多一个字符或者少一个字符),这样一行一行地求,只能是近似长度。如果想显示对齐其实也可以的。
      

  5.   

    dc就是CDC类型了吧
    CString就用Mid