首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是`CString`?

什么是`CString`?
EN

Stack Overflow用户
提问于 2013-01-23 14:11:48
回答 3查看 59.3K关注 0票数 26

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

有些人使用这种格式

代码语言:javascript
复制
char a_c_string [];

而其他人则使用

代码语言:javascript
复制
CString another_c_string;

有什么不同吗?我在CStrings上找到的所有参考资料都像我在第一个示例中所做的那样声明它,我只在论坛等人们提供示例的论坛上看到过相反的方式。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-23 14:30:04

CString既不是C类型,也不是C++类型。本质上是std::string的替代方案的It appears to be a Microsoft invention

由于串联,

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

我建议忽略它,这样:

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

(b)代码是可移植的;

(c)你正在编写的C++,每个人都可以根据全球接受的ISO C++标准进行合理的解释,很多人为了这个明确的目的花了很多很多时间争论(你知道,而不是一个公司办公室里几个人在一个房间里)。

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

票数 41
EN

Stack Overflow用户

发布于 2013-01-23 14:42:46

许多GUI框架都有自己的string类。例如,QT有QString,wxWindows有wxString。在本例中,MFC具有CString。在MFC gui代码的上下文中使用CString是方便和有意义的,因为这样你就已经严重依赖于Visual C++,并且代码的可移植性将无法被设想。我会小心地说忽略它,因为它是非标准的-这一切都取决于上下文。

票数 28
EN

Stack Overflow用户

发布于 2013-01-23 14:33:37

以防这是造成混淆的原因:“MFC”中的"C“只是CString中所有类的前缀。MFC是微软提供的包装win32应用程序接口的C++库。这个字符串类与"C字符串“没有多大关系,”C字符串“用于描述C语言提供的字符串处理工具。C语言只提供了字符串处理函数,这些函数在指向表示字符串的char数组的指针上操作,并且它们要求最后一个字符是NUL (也称为NUL结尾或零结尾)。请注意,C++本身也有一个string类std::string (好吧,实际上还有std::wstring和std::basic_string模板,但是作为初学者,您可以放心地忽略它们)。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14473526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档