3

很抱歉开始另一个关于 SO 的无法回答的问题,但我只是对 C++ 中所有不同字符串类型的优缺点感到好奇。我的特殊问题是在 MFC 的 CStrings 和 std::string 之间(因为我正在做仅限 Windows 的软件),但这将扩展到 C++ 中的任何字符串格式。在 C++ 中使用的最佳字符串类型是什么,为什么?

更新:我实际上发现了一个重复的问题。感谢那些已经回答的人。请对其他问题提出任何新的答复: 您如何在 C++ 中处理字符串?

4

5 回答 5

7

在罗马做到入乡随俗。如果您使用 MFC,请使用 CString,因为所有类都针对它进行了优化。其他任何事情,请使用 std::string,因为它是标准,您会发现这种体验在其他情况下很有用。

于 2009-01-27T22:52:09.647 回答
5

标准::字符串

  1. 它是 STL 的一部分
  2. 它是便携式的。
  3. 正确使用它可以像 c-strings 一样高效
  4. 它比 c-strings 更安全。
于 2009-01-27T22:39:32.857 回答
3

总结...

std::string 优点:

  • 便携的
  • STL 和 Boost 算法支持
  • 比 CStrings 更安全

std::string 缺点:

  • 为 MFC 转换为 CString 可能会更慢

CString 优点:

  • 针对 CString 优化的 MFC 函数

CString 缺点:

  • 不便携
  • 不支持 Boost 或 STL 算法
于 2009-01-28T00:31:39.027 回答
1

除了 STL 中的算法之外,std::string 还可以通过 boost 字符串算法进行操作。对我来说,std::string 的支持库完全击败了 MFC。

于 2009-01-27T22:57:29.200 回答
0

c++ 字符串类型的大多数问题来自需要太大内存开销的一种或另一种字符串类型。也就是说,如果您必须从一种字符串类型转换为另一种字符串类型,它也会变得繁重。如果您正在构建一个大型应用程序,我建议您制定一个关于使用哪些字符串的策略。

于 2009-01-27T22:40:42.573 回答