C++ - 检查 TCHAR 数组是否为空

标签 c++ arrays

我知道这个问题可能与其他一些问题重复,但我想在进行此更改之前确保我是正确的,所以我还是要在这里问。在我维护的一个旧项目中有这行代码:

TCHAR m_sLogPath[MAX_LOGPATH_LEN];

有一行代码初始化和使用了数组,但过了一会儿就会检查:

if(NULL== m_sLogPath || _tcsicmp(m_sLogPath, trace_path)!=0){//code here}

我猜这个 if 语句正在检查 m_sLogPath 是否为空,但是 NULL== m_sLogPath 是毫无意义的检查,因为将数组与 NULL 进行比较没有意义。我将不得不删除 NULL== m_sLogPath peice,我的问题是应该去那里而不是检查数组是否为空?感谢所有的回答和帮助,

最佳答案

你是对的,如果在相同的上下文中完成,那是毫无意义的检查。

如果将它作为参数传递给函数,则数组会衰减为指针,这并不是毫无意义。

what should go there instead to check the array is empty

好吧,数组永远不会为空。它将始终包含 MAX_LOGPATH_LEN TCHAR。但以下方法可以解决问题:

if( m_sLogPath[0] == _T('\0') || _tcsicmp(m_sLogPath, trace_path)!=0)

关于C++ - 检查 TCHAR 数组是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10009759/

相关文章:

c# - 将外部 C/C++ CUDA 库与 C# 结合使用

c++ - 来自文本文件的grep字符串并将其复制到CMake中的目录

c++ - 为什么 std::swap 不能在 Clang/Win 下的 vector<bool> 元素上工作?

c++ - 可变参数模板函数 : specialize head/tail and empty base case

c - 这段C语言代码的结果是什么解释?

javascript - jquery 从返回的数组中生成单个变量

javascript - 使用 lodash 将数组转换为对象

c++ - 具有两个可以采用多种不同类型的操作数的虚函数

python - 为什么花式索引与 numpy 中的切片不同?

java - 创建行和列