【发布时间】:2017-02-24 23:54:38
【问题描述】:
我正在尝试逐行读取 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)。
【问题讨论】:
-
GetInstruction()返回什么?每次调用它都会返回相同的值吗? -
GetInstruction 从上面的二进制数序列中返回一行,例如 00001010 作为字符串。
-
那么当你调用它两次时,它会返回两个不同的行吗?
-
代码片段的前两行调用
GetInstruction()两次。我想知道opcode和fucode是否指的是同一条指令。 -
@DYZ 是 opcode 和 fucode 指的是当前迭代的相同指令。 fucode 是最后一位,操作码是前两位。
标签: c++ string string-comparison