如何解决如何检查无符号字符向量是否包含所有空字符
我需要检查向量是否包含所有空字符,然后根据该结果执行一些操作。我在堆栈溢出中发现了几个问题,但它们与我的要求不完全匹配。
我可以想到的一种确定所有空字符向量的解决方案是:
if(Buffer[0] == '\0') {
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,'\0',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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。