string 与 CString的区别

来源:互联网 发布:游戏计时器软件 编辑:程序博客网 时间:2024/05/29 19:52
CString 是MFC或者ATL中的实现,
string是C++标准库中的实现
string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;
  CString(typedef CStringT<TCHAR, StrTraitMFC<TCHAR>> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),TCHAR(ANSI与unicode均可);
  char*为C编程中最常用的字符串指针,一般以’\0’为结束标志;

在MFC、ATL中使用字符串尽量使用CString,毕竟都是微软的孩子,各方面都比其它更有优势,而在非微软平台上或对移植性要求较高的场合推荐使用string,标准模板库提供了那么强大的泛型算法,没必要再自己去造车轮。


相互转换:

01 //CString to string

    02 string CStringToString(const CString &cstr)

    03 {

    04    string str=cstr.GetBuffer(0);

    05    cstr.ReleaseBuffer();

    06    return str;

    07 }

    08

    09 void CStringToStringEx(const CString &cstr, string &str)

    10 {

    11    str=cstr.GetBuffer(0);

    12    cstr.ReleaseBuffer();

    13 }

    14

    15 //string to CString

    16 CString StringToCString(const string &str)

    17 {

    18    CString cstr=str.c_str();

    19    return cstr;

    20 }

    21

    22 void StringToCStringEx(const string &str, CString &cstr)

    23 {

    24    cstr=str.c_str();

    25 }

    26

    27 //CStringA to string

    28 string CStringAToString(const CStringA &cstra)

    29 {

    30    string str=cstra.GetBuffer(0);

    31    cstra.ReleaseBuffer();

    32    return str;

    33 }

    34

    35 void CStringAToStringEx(const CStringA &cstra, string &str)

    36 {

    37    str=cstra.GetBuffer(0);

    38    cstra.ReleaseBuffer();

    39 }

    40

    41 //CStringW to string

    42 string CStringWToString(const CStringW &cstrw)

    43 {

    44    CStringA ctsra(cstrw.GetBuffer(0));

    45    cstrw.ReleaseBuffer();

    46    string str=cstra.GetBuffer(0);

    47    cstra.ReleaseBuffer();

    48    return str;

    49 }

    50

    51 void CStringWToStringEx(const CStringW &cstrw, string &str)

    52 {

    53    CStringA ctsra(cstrw.GetBuffer(0));

    54    cstrw.ReleaseBuffer();

    55    str=cstra.GetBuffer(0);

    56    cstra.ReleaseBuffer();

    57 }


0 0
原创粉丝点击