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

时间:2013-08-19 13:24:24

标签: c++

以下代码无效。在这里,我想检查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'\0')
        return 0;           
}

1 个答案:

答案 0 :(得分:10)

我使用较短的表格:

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

如果您需要的只是测试为空,则无需获取字符串的整个长度。如果指针为空,短路规则将阻止语句的后半部分引起错误。

除此之外,我希望你问题中的代码能够正常运行。

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