我有一个逐行读取的循环。在循环中,我有一个if块,用于检查该行是否不是空字节。当一行有多个空字节时,if语句仍然返回true。
我需要一种方法来检查一行是否有空字节。
Block block = this->mMemblockDevice->readBlock(parent);
std::stringstream inputPath(block.toString());
std::string segment;
std::string contentNew = "";
while(std::getline(inputPath,segment)){
if(segment != "\0"){ // If a / is last then a null byte
contentNew += segment + "\n"; //Check size after every line
std::cout << " Line Size: " << contentNew.size() << " Line: " << segment << std::endl;
}
}
我必须检查空字节的原因是我写入要求大小恰好为512个字符/字节大的类,所以我做content.resize(512, '\0');
现在我需要在字符串中添加字符所以我需要删除空字节,以便我可以附加字符。
循环中的std :: cout输出:
Line Size: 3 Line: 0/
Line Size: 5 Line: 0
Line Size: 513 Line:
答案 0 :(得分:0)
您可以使用std::find并在整个字符串中搜索空字符。如果找不到,那么该函数将最后返回。
if(std::find(std::begin(segment), std::end(segment), '\0') == std::end(segment))
{
// string does not contain any null characters
}
答案 1 :(得分:0)
我找到了解决问题的方法。我只是改变了所以我只检查字符串中的第一个字符是否为空字节。
工作代码类似于
while(std::getline(inputPath,segment)){
if(segment[0] != '\0'){ // If a / is last then a null byte
contentNew += segment + "\n"; //Check size after every line
std::cout << " Line Size: " << contentNew.size() << " Line: " << segment << std::endl;
}
}