为什么我看到一些使用CStrings声明不同的代码。
有些人使用这种格式
char a_c_string [];而其他人则使用
CString another_c_string;有什么不同吗?我在CStrings上找到的所有参考资料都像我在第一个示例中所做的那样声明它,我只在论坛等人们提供示例的论坛上看到过相反的方式。
发布于 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函数参数。我建议忽略它,这样:
(a)人们知道你在说什么;
(b)代码是可移植的;
(c)你正在编写的C++,每个人都可以根据全球接受的ISO C++标准进行合理的解释,很多人为了这个明确的目的花了很多很多时间争论(你知道,而不是一个公司办公室里几个人在一个房间里)。
它只有在使用Microsoft Visual C++编程时才可用,这在很大程度上是有限制的。
发布于 2013-01-23 14:42:46
许多GUI框架都有自己的string类。例如,QT有QString,wxWindows有wxString。在本例中,MFC具有CString。在MFC gui代码的上下文中使用CString是方便和有意义的,因为这样你就已经严重依赖于Visual C++,并且代码的可移植性将无法被设想。我会小心地说忽略它,因为它是非标准的-这一切都取决于上下文。
发布于 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模板,但是作为初学者,您可以放心地忽略它们)。
https://stackoverflow.com/questions/14473526
复制相似问题