如何检查 unsigned char 向量是否包含所有空字符

How to check whether an unsigned char vector contains all null characters

我需要检查我的矢量是否包含所有空字符并根据该结果执行一些操作。我在 Stack overflow 中发现了几个问题,但它们并不完全符合我的要求。

我能想到的一个解决方案来决定一个包含所有空字符的向量是:

if(Buffer[0] == '[=10=]') {
 std::cout<<"vector contains all NULL characters";
}

如果有更好的方法,请分享您的想法。

完整代码为:

File1.cpp:

std::vector<unsigned char> Buffer(BufferSize, 0);

File2.cpp:

try
{
    // do some operation, if no exception then fill the buffer
    // if exception then go to catch block
}
catch(...)
{
    memset(Buffer, '[=12=]', BufferSize); 
}

在此之后,在 File1.cpp 中,我只得到 Buffer,其中填充了有效数据或 '\0'。

这是在 C++ 98 中

您可以使用std::all_of()算法来检查是否所有元素都满足条件。 我希望你也能看到 std::any_of()std::none_of()

int BufferSize = 30;
vector<unsigned char> Buffer(BufferSize, 0);
bool is_clear = std::all_of(Buffer.cbegin(), Buffer.cend(), [](unsigned char c) {return c == 0; });

对于 C++11 不可用的情况,您可以像这样实施 any_of:

bool is_clear=true;
for(size_t i=0; i<Buffer.size(); ++i)
{
  if(Buffer[i]!=0)
  {
    is_clear=false;
    break;
  }
}