c++ - 如何检查 LPCTSTR 变量是否为空

标签 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;           
}

最佳答案

我使用较短的形式:

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

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

除此之外,我希望您问题中的代码也能正常工作。

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

关于c++ - 如何检查 LPCTSTR 变量是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18314939/

相关文章:

c++ - 在 C 代码之间共享数据的最佳方式

C++ 没有已知参数 1 从 ‘Node*’ 到 ‘Node*&’ 的转换

c++ - 从 DICOM 文件 .dcm 获取像素数据

c++ - boost::program_options 使用 -p 但不使用 --param

c++ - 有没有办法确定 sprintf 将写入多少个字符?

c++ - C++中的私有(private)继承

C++ 正则表达式匹配行首

c++ - main() 函数是否使用了 odr?

c++ - 将图像插入 gstreamer 管道

c++ - 带 pic18f445k22 的 7 段显示数字时钟