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