CString、char*、string之间的转化
-
1.string -> char*
直接调用c_str()函数即可。
std::string str("hello");
char dst[128]={};
strcpy(dst,str.c_str());
- 2 char* -> string
因为string中的构造函数和重载了赋值运算符,所以我们可以借助其来进行转换。
std::string str("hello");
str = "hi";
- 3 string -> CString
string 无法直接转换为CString,所以需要先转换成char*。
std::string s1("hello");
CString cstr(s1.c_str()); //方法一
cstr.Format("%s",s1.c_str());
- 4 CString -> string
CString cstr4 = "CString to string4";
std::string str;
str = cstr3.GetBuffer(cstr3.GetLength());
- 5 CString -> char*
strcpy(char,CString,sizeof(char));//借助strcpy将对应的内存直接copy过去
char* p = cstr3.GetBuffer(cstr3.GetLength());//注意这块的内存是有CString进行分配的
- 6 char* -> CString
- 因为CString中的构造函数和重载了赋值运算符,所以我们可以借助其来进行转换。
CString str("hello");
str = "hi";
以上的转换是在非unicode(多字节)情况下的转换,而在unicode下,CString 对应的string 是wstring,对应的char需要进行_T(char).