我想实现的是一个知道指针的字符串".#..#.#...#."的分隔(以#号分隔的,每个#之间的字符不等长)把每个#号前的字符分别显示到4个edit控件编辑框里面我是用两个函数实现的 一个是dispach 负责拆分字符串,存到buffer中.另一个是display负责显示下面是我的代码,显示不出来,请大侠指点,谢谢!!!
void CMy30Dlg::dispach()
{
CString str = "a#bc#dfgh#e";
int Len = str.GetLength();
int Len1;
char buffer[200],*p;
p=buffer;
while (Len1=str.Find("#"))
    {
char *p=(LPSTR)(LPCTSTR)str.Left(Len1);
str=str.Right(Len-Len1-1);
Len=str.GetLength();

    }//每次循环得到的字符串都保存在了buffer里面
}void CMy30Dlg::display()
{
int i=1 ;
char ch1[10],ch2[10],ch3[10],ch4[10],*t1,*t2,*t3,*t4;
t1 = ch1;
t2 = ch2;
t3 = ch3;
t4 = ch4;
CString m_char,m_disp;
char *p = (LPSTR)(LPCTSTR)m_disp;
m_char = "/0";    while (!m_char.IsEmpty()&&(i<5))
    {
int index = m_disp.Find(m_char);
    m_disp= m_disp.Right(m_disp.GetLength()-index-1);
        char *t1=(LPSTR)(LPCTSTR)m_disp;
i++;
    }
    m_fre =  *t1;
m_bw = *t2;
m_sen =  *t3;
m_hop=  *t4;
    UpdateData(false);}

解决方案 »

  1.   

    写得好复杂!
    下面的代码将分解后的结果存放再strtemp数组中.
    CString str = "a#bc#dfgh#e";
    CString strtemp[4];
    int nFind = 0;
    int i=0;
    for (;nFind != -1;)
    {
    nFind = str.Find("#",0);
    if(nFind != -1)
    {
    strtemp[i++] = str.Left(nFind);
    str= str.Mid(nFind + 1);
    }
    else
    {
    strtemp[i++] = str;
    } }
      

  2.   

    {
    char *p=(LPSTR)(LPCTSTR)str.Left(Len1);
    str=str.Right(Len-Len1-1);
    Len=str.GetLength();    }//每次循环得到的字符串都保存在了buffer里面
    }
    ???你哪有把得到的字符串都保存在了buffer里面的代码呀
      

  3.   

    看看MSDN中CString的Tokenize方法的例子吧,要简单些:
    //typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;
    CAtlString str( "%First Second#Third" );
    CAtlString resToken;
    int curPos= 0;resToken= str.Tokenize("% #",curPos);
    while (resToken != "")
    {
       printf("Resulting token: %s\n", resToken);
       resToken= str.Tokenize("% #",curPos);
    };
      

  4.   

    汗~~ :(
    刚刚学 惭愧那我第二个函数能实现显示在四个edit框中么 谢谢!!!
      

  5.   

    假如你所要显示的内容放在字符串string里,
    CString string="......";
    CWnd *pWnd;
    pWnd=this->GetDlgItem(IDC_EDIT1);
    pWnd->SetWindowText(string);
    通过上面几行就可以把一个字符串显示到Edit里了。
      

  6.   

    那如果我的字符串是放在一个数组中的呢 比如就是temp[4]
    我要把每一个里面的字符同时显示在4个edit中,该怎么办呢我显示不出来,代码不报错,肯定是我方法不对谢谢!!
      

  7.   

    用一个MFC未公开函数AfxExtractSubString来搞定字符串分割
    CString str = "a#bc#dfgh#e";
    CString str1,str2,str3,str4;
    AfxExtractSubString(str1,str,0,'#');//str1="a"
    AfxExtractSubString(str2,str,1,'#');//str2="bc"
    AfxExtractSubString(str3,str,2,'#');//str3="dfgh"
    AfxExtractSubString(str4,str,3,'#');//str4="e"
      

  8.   

    这两个~~
    =============
    用一个MFC未公开函数AfxExtractSubString来搞定字符串分割
    CString str = "a#bc#dfgh#e";
    CString str1,str2,str3,str4;
    AfxExtractSubString(str1,str,0,'#');//str1="a"
    AfxExtractSubString(str2,str,1,'#');//str2="bc"
    AfxExtractSubString(str3,str,2,'#');//str3="dfgh"
    AfxExtractSubString(str4,str,3,'#');//str4="e"
    CString string="......";
    CWnd *pWnd;
    pWnd=this->GetDlgItem(IDC_EDIT1);
    pWnd->SetWindowText(string);