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

C++ - Check if TCHAR array is empty

本文关键字:是否 数组 检查 TCHAR C++-      更新时间:2023-10-16

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

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,我的问题是应该去那里检查数组是否为空?感谢所有的回答和帮助,

你是对的,如果在同一上下文中进行,那是一次毫无意义的检查。

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

应该去那里检查阵列是空的

数组从不为空。它将始终包含MAX_LOGPATH_LEN TCHAR s。但以下内容可能会起作用:

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

m_sLogPath数组始终包含MAX_LOGPATH_LEN字符。假设MAX_LOGPATH_LEN是一个大于0的常数,那么数组将永远不会真正为空。

我猜您真正想检查的是存储在这个数组中的C样式字符串是否为空。如果是这样的话,那么最简单的方法就是:

#include <tchar.h>
#include <windows.h>
const size_t MAX_LOGPATH_LEN = MAX_PATH;
TCHAR m_sLogPath[MAX_LOGPATH_LEN];
int main()
{
    if (m_sLogPath[0] == _T(''))
    {
        // m_sLogPath contains empty string.
    }
}