与字符串的向量比较
Vector comparison with string
我有一个包含字符串的用户输入数据的字符串向量。现在我需要确保程序不会执行,如果字符串不同于指定的少数。Vector包含4个字段,每个字段有不同的条件:
- 矢量[0]只能为"1"或"0"
- 向量[1]只能是"红色"或"绿色"
- 向量[2]只能是"1"、"2"或"3"
- 矢量[3]只能为"1"或"0"
我试着为每一个条件写if:
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并返回error。我尝试用if代替else if,但它也不起作用。我检查了vector[i]
内容,它返回正确的字符串。不要在信的末尾加上"等等。删除else和释放开关只会使程序检查第一条件而忽略其余条件。
我可能做错了什么,但是我在网上找不到答案,所以我决定在这里问。
这一行:
if(tokens[0]!="1" || tokens[0]!="0")
应:if(tokens[0]!="1" && tokens[0]!="0")
^^
对于其他if
语句也是如此。
条件无效。
任何不同的值都可以满足您的条件。
你应该用&&
而不是||
。
if (tokens[0] != "1" || tokens[0] != "0") {
考虑这一行。如果tokens[0]
是"1"
,这是一个有效的输入,它将不满足第一个条件,但它将满足第二个条件。只有当值不是两个有效的可能输入时,才会抛出错误。
这意味着你的条件应该是:
if (tokens[0] != "1" && tokens[0] != "0") {
其他的也一样
你应该把这些||
变成&&
。如果输入只能是X
或Y
,这意味着当它不是X
和而不是Y
:
if (tokens[0] != "1" && tokens [0] !="0")
// ^^
第一个if:
if(tokens[0]!="1" || tokens[0]!="0")
ALWAYS求值为true
。
相关文章:
- C++ 如何比较n个排序的整数向量以找到互元素?
- C++ 向量与用户定义的类比较?(==, <, >)
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 在这里,当我们比较 if(vc[i]==vc1[i]) 时,它是向量数组. 实际上比较的值是多少,
- 在C++中比较来自向量的字符串时出现分段错误
- 比较向量中的元素时所花费的时间呈指数级增长
- (C++) 学习向量 - 编码/输入流终止/比较向量的问题
- C++比较向量和列表
- 比较向量元件的运行时间复杂性的提高
- 比较向量中元素的最有效、最快捷的方法
- 单词比较 - 向量/getopt
- 如何递归比较向量
- C++ 比较向量<string> X 与字符串 S
- 比较向量的元素
- 比较C++向量的最快方法是什么?
- 比较向量<string>内的线
- 有效的比较向量的方法
- 如何在Eigen中近似比较向量
- 如何以特定的方式高效地比较向量和数组
- 比较向量和添加缺失的元素