以下代码无效。这里我想检查 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;
}
最佳答案
我使用较短的形式:
if (lpClassName == NULL || lpClassName[0] == 0)
如果您只需要测试是否为空,则无需获取字符串的整个长度。如果指针为空,短路规则将防止语句的后半部分导致错误。
除此之外,我希望您问题中的代码也能正常工作。
编辑: 在这种情况下,指针似乎来自 CreateWindowEx,这意味着它可能不是实际的字符串指针,而是一个 ATOM 值。区分的方法是检查高位是否全为零。 Microsoft 对资源 ID 使用相同的约定并提供 IS_INTRESOURCE
macro测试这种情况。
关于c++ - 如何检查 LPCTSTR 变量是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18314939/