How To Compare a CString to the Empty String (111923)



The information in this article applies to:

  • The Microsoft Foundation Classes (MFC), when used with:
    • Microsoft Visual C++ for Windows, 16-bit edition 1.0
    • Microsoft Visual C++ for Windows, 16-bit edition 1.5
    • Microsoft Visual C++ for Windows, 16-bit edition 1.51
    • Microsoft Visual C++ for Windows, 16-bit edition 1.52
    • Microsoft Visual C++, 32-bit Editions 1.0
    • Microsoft Visual C++, 32-bit Editions 2.0
    • Microsoft Visual C++, 32-bit Editions 2.1
    • Microsoft Visual C++, 32-bit Editions 4.0
    • Microsoft Visual C++, 32-bit Editions 5.0

This article was previously published under Q111923

SUMMARY

The correct way to test a CString to see whether it is empty (or not empty) is to use the IsEmpty() member function as shown below:
   CString x = "This is a sample CString";
   if (x.IsEmpty())
      AfxMessageBox("The CString is EMPTY");
   else
      AfxMessageBox("The CString is not EMPTY");
				

MORE INFORMATION

The CString member function IsEmpty() tests a CString for the empty condition. The function returns nonzero if the string has zero length.

If the CString equality operators (==, !=) are used in an attempt to test whether a CString is NULL, a general protection (GP) fault may occur. The following code fragment demonstrates this:
   CString x = "This is a sample CString";
   if (x != NULL)  // GP Fault for (x == NULL) condition, as well
      AfxMessageBox("The CString is not EMPTY");
   else
      AfxMessageBox("The CString is EMPTY");
				
Because x is a CString object, not a pointer, it is inappropriate to compare x to a null pointer.

Testing a CString against the empty string, as shown below, is allowed. Because a temporary CString object is constructed, this method is less efficient than calling IsEmpty():
   CString x = "This is a sample CString";
   if (x != "")
      AfxMessageBox("The CString is not EMPTY");
   else
      AfxMessageBox("The CString is EMPTY");
				

Modification Type:MinorLast Reviewed:7/15/2004
Keywords:kbhowto kbString KB111923