What is `CString`?

c++, mfc, string

Solution

`CString` is neither a C nor a C++ type. It appears to be a Microsoft invention that is essentially an alternative to `std::string`:

- `CString` objects can grow as a result of concatenation operations.

- `CString` objects follow "value semantics." Think of a `CString` object as an actual string, not as a pointer to a string.

- You can freely substitute `CString` objects for `const char*` and `LPCTSTR` function arguments.

- A conversion operator gives direct access to the string's characters as a read-only array of characters (a C-style string).

I recommend ignoring it, so that:

(a) people know what you are talking about; (b) your code is portable; (c) you are writing C++ that everybody can rationalise about according to the worldwide-accepted ISO C++ standard that many, many people spend many, many hours arguing about for this express purpose (y'know, as opposed to a few guys in a room in one company's office).

It will only be available when you are programming with Microsoft Visual C++, which is substantially limiting.

Problem

Why do I see some code using `CStrings` declared differently. Some use this format ``` char a_c_string []; ``` While others use ``` CString another_c_string; ``` Is there a difference? All the references I have found on `CStrings` declare it as I did in the first example, I have only seen it done the other way on forums and the like where people are giving examples.

Original source

Related problems