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 }