C++ CString与CStringArray互相转化

最近在学VC,CAD二次开发,完成一些小任务。

CString与CStringArray互相转化是很重要的一个知识点,

在C#中这个转化是内置的函数Split('');

C++好麻烦。

大气象
//类似C#的Split('_');DivStr(str,strArr,_T("_"));
UINT DivStr(CString str,CStringArray& Arr,char ch)
{
    
int nFindposi  = str.Find(ch);
    
if( nFindposi <0 )
        
return 0;

    
while( nFindposi > 0)
    {
        Arr.Add(str.Left(nFindposi) );
        str 
= str.Right( str.GetLength() - nFindposi -1);
        str.TrimLeft(ch);    
//warning

        nFindposi  
= str.Find(ch);
    }

    
if!str.IsEmpty() )
        Arr.Add(str);

    
return Arr.GetSize();
}

UINT DivStr(CString str,CStringArray
& Arr,CString strDiv)
{
    
int nFindposi  = str.Find(strDiv);
    
if( nFindposi <0 )
        
return 0;

    
while( nFindposi > 0)
    {
        Arr.Add(str.Left(nFindposi) );
        str 
= str.Right( str.GetLength() - nFindposi -1);
        str.TrimLeft(strDiv);    
//warning

        nFindposi  
= str.Find(strDiv);
    }

    
if!str.IsEmpty() )
        Arr.Add(str);

    
return Arr.GetSize();
}
void CCStringArrayDlg::OnBnClickedButtonOk()
{
    
// TODO: 在此添加控件通知处理程序代码
    CString str = m_str;//_T("i am a student");
    CStringArray strArr;
    
//CString转CStringArray
    if( DivStr(str,strArr,_T(" ")) <= 0)
    {
        AfxMessageBox( _T(
"数组为空!"));
        
return;
    }
    
//CStringArray转CString
    str = _T("");
    
int index =strArr.GetSize();
    
for(int i=0;i<index;i++)
    {
        str 
+= strArr[i]+_T("_");
    }
    m_str 
= str.TrimRight('_');
    UpdateData(
false);
}

 

m_str是Static Text对应的变量。
1.Static Text控件默认ID是IDC_STATIC
必须修改为其他才可以为其添加变量。
2.在构造函数是初始化一些变量,比如Static Text的Caption
CCStringArrayDlg::CCStringArrayDlg(CWnd* pParent /*=NULL*/)
 : CDialog(CCStringArrayDlg::IDD, pParent)
 , m_str(_T("i am a student"))
{
 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
也可以在
BOOL CCStringArrayDlg::OnInitDialog(){}中初始化。
***VC的界面与数据是分开存储的。
不能像C#的开发那样,在开发阶段设置Text默认值,我晕。

3.c++项目文件好大啊,就这个简单玩意就20M,我晕。

posted @ 2010-11-08 11:47  大气象  阅读(11549)  评论(18编辑  收藏  举报
http://www.tianqiweiqi.com