如何检查MFC CString是否为空?

时间:2015-11-24 09:53:58

标签: c++ visual-c++ mfc c-strings

我想检查MFC CString是否为null。有没有办法做到这一点?

PS:我想检查它是否为空,如果它是空的。

CString m_strName;

enter image description here

2 个答案:

答案 0 :(得分:4)

CString对象永远不会NULL。与char*wchar*(可能是NULL)不同,作为指针的CString对象的内部缓冲区始终指向数据。对于给定的CString对象,您只能使用CString::IsEmpty()来区分它是否为空。

出于同样的原因,LPCTSTR强制转换操作符永远不会返回NULL

答案 1 :(得分:1)

由于CString类模板 1)的内部布局,存储的指针不能是NULL

CString类模板只有一个类成员:m_pszData。该成员不仅包含字符串数据,还包含其他信息(如字符串长度,引用计数,缓冲容量等;请参阅CStringData)。该附加信息存储在存储指针的左侧。两个部分(字符串数据和字符缓冲区)必须分配在单个内存块中,因为只有一个指针可以引用它们。由于字符串数据总是需要存在,m_pszData永远不会是NULL

<小时/> 1) CString是特定CStringT模板实例化的typedef。 CStringT本身来自CSimpleStringT类模板。