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.