什么是`CString`?(What is `CString`?)

2019-07-18 13:28发布

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

有些人用这种格式

char a_c_string [];

而其他人使用

CString another_c_string;

是否有区别? 所有我已经找到了引用CStrings声明为我做的第一个例子中,我只看到它做在论坛上的其他方式和那里的人们给予的例子等。

Answer 1:

CString既不是一个C,也不是一个C ++型。 这似乎是一个Microsoft发明 ,其基本上可替换std::string

  • CString对象可以作为串联操作的结果发展。
  • CString对象遵循“值语义”。 一个想象CString对象作为实际字符串,而不是作为一个指向字符串的指针。
  • 您可以随意替换CString的对象const char*LPCTSTR函数参数。
  • 转换操作符提供了作为字符的只读数组(C风格的字符串)直接访问字符串的字符。

我建议忽略它,这样:

(一)人们知道你在说什么;
(二)你的代码是便携式的;
(三)你正在编写C ++,每个人都可以根据全球公认的ISO C ++标准,很多,很多人花很多很多时间争论这一明确目的(你知道,作为一个不是几个家伙理顺有关房间里一个公司的办公室 )。

当您使用Microsoft Visual C ++,它基本上限制编程它只会用。



Answer 2:

许多GUI框架都有自己的字符串类。 如QT拥有的QString ,wxWindows的有wxString 。 在这种情况下,MFC有CString的。 它是那么方便,是有道理的,因为那时你已经严重依赖于Visual C ++和代码的可移植性不会考虑使用CString的时候在MFC GUI代码的上下文。 我会小心毯声明说忽略它,因为它是非标准的 - 这一切都取决于上下文。



Answer 3:

万一这混乱的原因:“CString的”中的“C”仅仅是一个前缀从MFC类都。 该MFC是微软包装Win32 API的一个C ++库。 这串类有什么与“C弦”,这是用来描述字符串处理设施,在C语言提供。 C语言只提供上的指针来表示字符串的字符数组操作为字符串处理函数和它们需要的最后一个字符是一个NUL(又名NUL封端的或零封端的)。 需要注意的是C ++本身也有一个字符串类std::string (实际上还有还有的std :: wstring的和的std :: basic_string的模板,但作为一个初学者,你可以放心地忽略那些)。



Answer 4:

CStringVisual C ++使用。

VISUAL C ++是微软实施的C ++



文章来源: What is `CString`?
标签: c++ string mfc