搞过MFC的人都知道cstring,给我们提供了很多便利的方法。
CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。
但是很多情况下,我们还是需要cstring和string的转换。
分两步:
1把cstring转为char数组
2根据char数组,构造自己的string(记得释放内存)
~~~
std::string CStringToSTDStr(const CString& theCStr)
{
const int theCStrLen = theCStr.GetLength();
char *buffer = (char*)malloc(sizeof(char)*(theCStrLen+1));
memset((void*)buffer, 0, sizeof(buffer));
WideCharToMultiByte(CP_UTF8, 0, static_cast<cstring>(theCStr).GetBuffer(), theCStrLen, buffer, sizeof(char)*(theCStrLen+1), NULL, NULL);
std::string STDStr(buffer);
free((void*)buffer);
return STDStr;
}
~~~
而string转cstring那就很轻松了:
~~~
string str="abcde";
CString cstr(str.c_str());
~~~
- 前言
- string与整型或浮点型互转
- 指定浮点数有效数字并转为string
- string的替换、查找(一些与路径相关的操作)
- string的分割、替换(类似string.split或是explode())
- string的初始化、删除、转大小写(construct erase upper-lower)
- string的遍历(使用下标还是iterator)
- std::string与MFC中CString的转换
- string到LPCWSTR的转换
- std:vector&lt;char&gt; 和std:string相互转换(vector to stringstream)
- CDuiString和string的转换(duilib中的cduistring)
- string与char、const char 的转换(data() or c_str())
- string的连接(+= or append or push_back)
- 函数返回局部变量string(引用局部string,局部string的.c_str()函数)
- 将string用于switch语句(c++做C#的事儿, switch中break还是return厉害)
- 不要使用memset初始化string(一定别这么干)