c++ - 你如何处理 C++ 中的字符串?

标签 c++ string

您最喜欢在 C++ 中使用字符串的哪种方式? char 的 C 风格数组?还是 wchar_tCStringstd::basic_stringstd::stringBSTRCComBSTR ?

当然,这些都有自己的应用领域,但无论如何,你最喜欢哪一个,为什么?

最佳答案

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/

相关文章:

java - 将字符串替换为空格

c++ - For循环在C++中以字符串长度无限运行

c# - 根据字符格式化字符串

java - Unicode 代码字符串

c++ - OpenGL 围绕点移动相机

c++ - C++ 中单冒号 ":"的重要性

c++ - 如何检测/查找 64 位结构对齐问题

c++ - 编译.h文件

c++ - 如何将所有设置位向右移动?

javascript - 重复字符串 - Javascript