I want to check if a MFC CString is null or not. Is there a way to do this?
PS: I want to check if it is null not if it's empty.
CString m_strName;

A CString object is never NULL. Unlike a char* or wchar*, which can be NULL, the internal buffer of a CString object which is a pointer always points to a data. For a given CString object, you can only differentiate whether it is empty or not using CString::IsEmpty().
For the same reason, the LPCTSTR cast operator never returns NULL.
Due to the internal layout of the CString class template1), the pointer stored cannot ever be NULL.
The CString class template has a single class member: m_pszData. This member not only contains the string data, but also additional information (like string length, reference count, buffer capacity, etc.; see CStringData). This additional information is stored to the left of the stored pointer. Both parts (string data and character buffer) must be allocated in a single block of memory, as there is only one pointer to reference both. Since the string data always needs to be there, the m_pszData can never be NULL.
CString is a typedef for a particular CStringT template instantiation. The CStringT itself is derived from the CSimpleStringT class template.
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