C++字符类型与字符串转换详解
C++里的字符类型和字符串,说实话,真的是基础又绕的一个点。char、char*、const char*这些你应该都见过吧,但每种用起来还真不太一样。像用char*
你得注意别写入非法内存,不然直接爆炸。
字符数组char[]
其实比指针更安全些,因为它自带长度信息,比较不容易踩雷。写代码的时候你更愿意用std::string
,功能丰富还好用,不过转来转去也得知道怎么从char*
变std::string
,或者反过来用c_str()
。
Unicode 字符的时候,wchar_t就登场了。Windows 开发经常会看到LPCWSTR
、LPWSTR
这类东东,习惯之后还挺顺手。还有TCHAR
系列,能根据你是用多字节还是宽字节字符集,自动适配。省得你手动搞一堆宏。
如果你做过 COM 开发,BSTR和bstr_t
应该不陌生,是接口字符串的时候,配合 ATL 的CString
,用起来还挺方便。MakeLower()
、MakeUpper()
这类方法也是手到擒来。
多种类型之间的转换,其实不复杂,像std::string str(pString);
这样直接构造就行,str.c_str()
能转回const char*
。宽字符和窄字符之间用wcstombs
、mbstowcs
就能搞定。别忘了转换前最好下编码,尤其跨平台的时候,避免乱码。
如果你经常在不同字符类型间切换,建议把这篇文章收藏下。还贴了不少相关文章,像字符数组与字符串的不同之处、C++ 字符指针表示字符串这些,点进去看看思路更清楚。
开发时用什么字符串类型,还是得看场景。如果你是在做底层接口,指针更高效。如果你在搞逻辑,那std::string
或CString
就更合适。多练几次就熟了,别怕。
68.5KB
文件大小:
评论区