矢量与字符串比较

时间:2013-05-08 16:04:40

标签: c++ vector comparison

我有一个包含字符串的用户输入数据的字符串向量。现在我需要确保如果字符串不同于指定的少数,程序将不会执行。 Vector包含4个字段,每个字段都有不同的条件:

  • vector [0]只能是“1”或“0”
  • vector [1]只能是“红色”或“绿色”
  • vector [2]只能是“1”,“2”或“3”
  • vector [3]只能是“1”或“0”

我试着为每种条件写作:

if(tokens[0]!="1" || tokens[0]!="0"){
    decy = "error";
}
else if(tokens[1]!="red" || tokens[1]!="green"){
    decy = "error";
}
else if(tokens[2]!="1" || tokens[2]!="2" || tokens[2]!="3"){
    decy = "error";
}
else if(tokens[3]!="1" || tokens[3]!="0"){
    decy = "error";
}
else{
switch(){} //working code
}
return decy;

它始终先输入if并返回错误。我尝试使用 if 而不是 else if ,但它也不起作用。我检查了vector[i]内容并返回正确的字符串。最后没有“”等。删除 else 并释放开关只是使程序检查第一个条件并忽略其余部分。

我可能做的事情非常糟糕,但我无法在互联网上找到答案,所以我决定在这里问。

4 个答案:

答案 0 :(得分:3)

这一行:

if(tokens[0]!="1" || tokens[0]!="0")

应该是:

if(tokens[0]!="1" && tokens[0]!="0")
                  ^^

其他if语句也是如此。

答案 1 :(得分:2)

您应该将||转换为&&。如果输入只能是XY,则表示如果输入不是X 而不是Y,则表示非法

if (tokens[0] != "1" && tokens [0] !="0")
//                   ^^

答案 2 :(得分:2)

条件无效。

任何不同的值都可以满足您的条件。

您应该使用&&代替||

例如:

if (tokens[0] != "1" || tokens[0] != "0") {

考虑这一行。如果tokens[0]"1",这是有效输入,它将不满足第一个条件,但它将满足第二个条件。您只希望在值既不是有效的可能输入时抛出错误。

这意味着您的条件应为:

if (tokens[0] != "1" && tokens[0] != "0") {

所有其他人也一样。

答案 3 :(得分:0)

第一个if:

if(tokens[0]!="1" || tokens[0]!="0")

始终评估为true