字符串类型的相互转换

char <--> string <--> CString

 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 }
Visual Studio 下的测试代码
原文地址:https://www.cnblogs.com/virgildevil/p/11219310.html