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.
A CString object keeps character data in a CStringData object. CString accepts NULL-terminated C-style strings. CString tracks the string length for faster performance, but it also retains the NULL character in the stored character data to support conversion to LPCWSTR .
cstring is the header file required for string functions. This function Returns a pointer to the last occurrence of a character in a string.
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.
The cstring header file contains definitions for C++ for manipulating several kinds of strings. Include the standard header into a C++ program to effectively include the standard header <string. h> within the std namespace.
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 aCString
object as an actual string, not as a pointer to a string.- You can freely substitute
CString
objects forconst char*
andLPCTSTR
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.
Many GUI frameworks have their own string class. e.g. QT has the QString, wxWindows has wxString. In this case MFC has the CString. It's then convenient and makes sense to use CString when in the context of MFC gui code because then you're already heavily dependent on Visual C++ and code portability will not be envisaged. I'd be careful of blanket statements saying to ignore it because it's non-standard - it all depends on the context.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With