检查行是否为空字节

时间:2015-10-26 09:58:40

标签: c++

我有一个逐行读取的循环。在循环中,我有一个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:

2 个答案:

答案 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;
    }
}