什么是\`CString\`?

新手上路,请多包涵

为什么我看到一些代码使用 CStrings 声明不同。

有些使用这种格式

char a_c_string [];

而其他人使用

CString another_c_string;

有区别吗?我在 CStrings 上找到的所有参考资料都像我在第一个示例中所做的那样声明它,我只在论坛等人们给出示例的地方看到它以其他方式完成。

原文由 user1768079 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 777
2 个回答

CString 既不是 C 也不是 C++ 类型。 它似乎是微软的一项发明,本质上是 std::string 的替代品:

  • CString 对象可以由于连接操作而增长。
  • CString 对象遵循“值语义”。将 CString 对象视为实际字符串,而不是指向字符串的指针。
  • 您可以自由地将 CString 对象替换为 const char*LPCTSTR 函数参数。
  • 转换运算符可将字符串的字符作为只读字符数组(C 样式字符串)直接访问。

我建议忽略它,以便:

(a) 人们知道你在说什么;

(b) 您的代码是可移植的;

© 你正在编写每个人都可以根据全球公认的 ISO C++ 标准合理化的 C++,许多人为了这个明确的目的花了很多很多时间争论(你知道,而不是少数人在 一间公司办公室的 房间)。

它仅在您使用 Microsoft Visual C++ 进行编程时可用,这在很大程度上是有限制的。

原文由 Lightness Races in Orbit 发布,翻译遵循 CC BY-SA 3.0 许可协议

许多 GUI 框架都有自己的字符串类。例如 QT 有 QString , wxWindows 有 wxString 。在这种情况下,MFC 具有 CString。在 MFC gui 代码的上下文中使用 CString 很方便且有意义,因为那时您已经严重依赖 Visual C++,并且不会设想代码可移植性。我会小心一揽子声明说忽略它,因为它是非标准的——这完全取决于上下文。

原文由 acraig5075 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题