您最喜欢在 C++ 中使用字符串的哪种方式? char
的 C 风格数组?还是 wchar_t
? CString
、std::basic_string
、std::string
、BSTR
或 CComBSTR
?
当然,这些都有自己的应用领域,但无论如何,你最喜欢哪一个,为什么?
最佳答案
std::string 或 std::wstring,取决于您的需要。为什么?
- 它们是标准的
- 它们是可移植的
- 他们可以处理 I18N
- 他们有性能保证(根据标准)
- 防止缓冲区溢出和类似攻击
- 可以根据需要轻松转换为其他类型
- 模板化得很好,为您提供了多种选择,同时减少了代码膨胀并提高了性能。真的。无法处理模板的编译器早已不复存在。
C 风格的字符数组只是自找麻烦。有时您仍然需要处理它们(这就是 std::string.c_str() 的用途),但是,老实说 - C 语言中最大的危险之一是程序员使用 char* 做坏事并结束缓冲区溢出。只是不要这样做。
wchar__t 数组也是一样的,只是更大。
CString、BSTR 和 CComBSTR 不是标准的,也不是可移植的。除非绝对强制,否则避免使用它们。理想情况下,只需在需要时将 std::string/std::wstring 转换为它们,这应该不会很昂贵。
请注意,std::string 只是 std::basic_string 的子代,但除非你有充分的理由不使用,否则最好还是使用 std::string。真的很好。让编译器负责这种情况下的优化。
关于c++ - 你如何处理 C++ 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/133364/