为什么我的字符串比较失败?

时间:2017-02-24 23:54:39

标签: c++ string string-comparison

我试图逐行读取C ++中的文件,并且已将每行读入向量。文件内容如下:

00001010
01101010
10101011
11110111

我正在尝试使用下面的比较来确定以00,01和10开头的行。

    std::string opcode = GetInstruction().substr(0,2);
    std::string fucode = GetInstruction().substr(7);

    if(opcode == "01") {
        AddInstruction(GetInstruction());
    }
    else if(opcode == "10") {
        SubInstruction(GetInstruction());
    }

    else if(opcode == "00") {
        LoadInstruction(GetInstruction());
    }

似乎不起作用的部分是如果我尝试提取以11开头并以1结尾的行。为此我正在进行以下比较。

    else if((opcode == "11") && (fucode == "1")){
        std::cout<<GetInstruction();
        PrintInstruction(GetInstruction());
    }

GetInstruction从上面的二进制数序列返回一行,例如00001010.上面的代码块里面没有任何内容似乎运行,所以我猜我的比较中有些东西是关闭但我看不清楚如何。我已经尝试打印出fucode的值,并为每行中的最后一个字符打印出正确的序列(即0 0 1 1)。

1 个答案:

答案 0 :(得分:0)

我弄清楚问题是什么,但我无法解释原因。也许其他一些人可以扩展它。改变

else if((opcode == "11") && (fucode == "1")){
    std::cout<<GetInstruction();
    PrintInstruction(GetInstruction());
}

 else if(opcode.compare("11") && fucode.compare("1")){
    std::cout<<GetInstruction();
    PrintInstruction(GetInstruction());
}

似乎解决了这个问题。