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 }