我想实现的是一个知道指针的字符串".#..#.#...#."的分隔(以#号分隔的,每个#之间的字符不等长)把每个#号前的字符分别显示到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);}
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);}
下面的代码将分解后的结果存放再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;
} }
char *p=(LPSTR)(LPCTSTR)str.Left(Len1);
str=str.Right(Len-Len1-1);
Len=str.GetLength(); }//每次循环得到的字符串都保存在了buffer里面
}
???你哪有把得到的字符串都保存在了buffer里面的代码呀
//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);
};
刚刚学 惭愧那我第二个函数能实现显示在四个edit框中么 谢谢!!!
CString string="......";
CWnd *pWnd;
pWnd=this->GetDlgItem(IDC_EDIT1);
pWnd->SetWindowText(string);
通过上面几行就可以把一个字符串显示到Edit里了。
我要把每一个里面的字符同时显示在4个edit中,该怎么办呢我显示不出来,代码不报错,肯定是我方法不对谢谢!!
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"
=============
用一个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);