1 #define _CRT_SECURE_NO_WARNINGS
2 #include <string>
3 #include <afx.h>
4
5 #define __string
6 using namespace std;
7 int main()
8 {
9
10 #if defined(__char)
11 char chs[256]="字符串转换";
12
13 //char -> CString
14 CString cstr(chs);
15 //char -> string
16 string s(chs);
17
18 #elif defined(__string)
19 string s="字符串转换";
20
21 //string -> char
22 //拷贝另一份
23 //新开辟一个缓冲区 ,s.c_str()最好保持只读
24 char chs[256];
25 strcpy(chs, s.c_str());
26 //不可以使用 char *chs = s.c_str()
27 //因为chs指向的地址内存不可修改(这种方式不安全)
28 //string -> CString
29 //需要利用上面的 char 指针来 做桥梁
30 CString cstr(chs);
31
32 #elif defined(__CString)
33 CString cstr = TEXT("字符串转换");
34
35 //CString -> char
36 CStringA cstr_a;
37 cstr_a = cstr;
38 //这里会给chs开辟内存
39 char * chs = cstr_a.GetBuffer(cstr_a.GetLength());
40 //CString -> string
41 //通过char 类型来做桥梁
42 string s(chs);
43
44 #endif
45
46 return 0;
47 }