C++ CString与CStringArray互相转化

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

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

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

C++好麻烦。

ExpandedBlockStart.gif 大气象
// 类似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,我晕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值