如何检查LPCTSTR变量为null或为空

How to check a LPCTSTR variable is null or empty

本文关键字:变量 null LPCTSTR 何检查 检查      更新时间:2023-10-16

下面的代码不起作用。在这里,我想检查lpClassName是null还是空的。

static HRESULT WINAPI ExampleMethod(
    __in_opt  LPCTSTR lpClassName)
{
    //code to check whether lpClassName is null or empty
    if( lpClassName == 0)
        return 0;
    if(*lpClassName) == L'')
        return 0;           
}

我使用一个较短的形式:

if (lpClassName == NULL || lpClassName[0] == 0)

如果只需要测试是否为空,就不需要获取字符串的整个长度。如果指针为null,短路规则将防止语句的后半部分导致错误。

除此之外,我希望您问题中的代码也能起作用。

编辑:在这种情况下,指针似乎来自CreateWindowEx,这意味着它可能不是实际的字符串指针,而是ATOM值。判断差异的方法是检查高位是否全部为零。Microsoft对资源ID使用相同的约定,并提供IS_INTRESOURCE宏来测试这种情况。