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,我晕。





    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/greatverve/archive/2010/11/08/cpp-cstring-cstringarray.html,如需转载请自行联系原作者



相关文章
C++学习——CString,char * ,string的相互转换
C++学习——CString,char * ,string的相互转换
237 0
|
存储 算法 C++
C++中的字符串操作&lt;cstring&gt;和&lt;string&gt;的区别
目录 目录 参考资料 字符串 cstring和string的区别在哪 string类的实现 注意不要盲目相信以下内容! 不要盲目相信以下内容! 不要盲目相信以下内容! (重要的事情说三遍),虽然以下内容也经过了我的验证,但是我的验证可能有错误的地方,欢迎大家留言告知。
1327 0
|
C++
C/C++的一点技巧:如何在控制台工程中使用CString类
在C/C++的开发工作中,我们经常会新建一个控制台工程来测试某个与界面无关的功能。在处理与字符串相关的内容时,我们会遇到一个很麻烦的问题,即控制台程序不支持使用CString类,而这个类由于对字符串处理功能相当完善,因此用途还是非常广泛的。
1173 0
|
C++ 程序员 算法
C 风格字符串,C++string类,MFC,CString类的区别。
字符串,顾名思义是由字符组成的字符串,在标准C,标准C++,MFC中 字符串这一功能的实现是不相同的,C++完全兼容了C。 1.  标准C中的字符串    在标准C中没有string这样的数据类型,C中的字符串是有char类型的字符数组或者char类型的字符指针来实现的。
1470 0
|
5天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
28 4
|
6天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
22 4
|
29天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
26 4
|
29天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
22 4
|
29天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
19 1