C++字符类型与字符串转换详解

C++里的字符类型和字符串,说实话,真的是基础又绕的一个点。charchar*const char*这些你应该都见过吧,但每种用起来还真不太一样。像用char*你得注意别写入非法内存,不然直接爆炸。

字符数组char[]其实比指针更安全些,因为它自带长度信息,比较不容易踩雷。写代码的时候你更愿意用std::string,功能丰富还好用,不过转来转去也得知道怎么从char*std::string,或者反过来用c_str()

Unicode 字符的时候,wchar_t就登场了。Windows 开发经常会看到LPCWSTRLPWSTR这类东东,习惯之后还挺顺手。还有TCHAR系列,能根据你是用多字节还是宽字节字符集,自动适配。省得你手动搞一堆宏。

如果你做过 COM 开发,BSTRbstr_t应该不陌生,是接口字符串的时候,配合 ATL 的CString,用起来还挺方便。MakeLower()MakeUpper()这类方法也是手到擒来。

多种类型之间的转换,其实不复杂,像std::string str(pString);这样直接构造就行,str.c_str()能转回const char*。宽字符和窄字符之间用wcstombsmbstowcs就能搞定。别忘了转换前最好下编码,尤其跨平台的时候,避免乱码。

如果你经常在不同字符类型间切换,建议把这篇文章收藏下。还贴了不少相关文章,像字符数组与字符串的不同之处C++ 字符指针表示字符串这些,点进去看看思路更清楚。

开发时用什么字符串类型,还是得看场景。如果你是在做底层接口,指针更高效。如果你在搞逻辑,那std::stringCString就更合适。多练几次就熟了,别怕。

doc 文件大小:68.5KB