C++-检查TCHAR数组是否为空
C++ - Check if TCHAR array is empty
我知道这个问题可能与其他问题重复,但在做出更改之前,我想确保我是正确的,所以我还是要在这里问。在我维护的一个旧项目中,有一行代码:
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.
}
}
相关文章:
- 如何找到大小'x'数组是否完全填充,在C++?
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 是否基于数组B整数打印数组A中的整数
- 检查TCHAR数组输入是否为带符号整数C++
- 堆栈和队列是否像C++中的数组一样传递?
- 在函数范围内在堆栈上分配的数组在离开函数时是否总是被释放?
- 是否假定reinterpret_cast<char*>(myTypePtr)指向数组?
- 如果分配数组引发异常,是否应该释放该数组
- C++默认情况下,指针类型数组的元素是否保证初始化为 nullptr?
- 我是否不正确地集中了这些字符数组?
- 是否可以就地构造一个固定大小的数组作为函数参数?
- 在 c++ 中是否允许创建具有运行时边界的数组?
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- 检查输入 std::array 指针数据是否等于某个常量数组
- 给定一个大小为 N 的数组 S,检查是否可以将序列拆分为两个序列
- C++:在多个线程中访问同一数组/向量的不同单元格是否会产生数据竞赛?
- 将对象的字节复制到数组并再次复制回来是否安全
- 是否可以将结构数组别名为结构成员数组?
- 当另一个数组是内存集时,内存集是否会更改数组长度?
- 任意大小的 constexpr 数组是否可以用作 switch 语句中的案例?