嘿我正在尝试为我的程序添加一些验证以确保加载正确的文件,我的验证基于字典文件,我正在尝试实现一些确保文件中的正确单词类型的东西比如名词和动词,我写了这个......
if (!type.compare("n") == 0) {
cout << "\nType is invalid please check file.\n" << endl;
system("Pause");
}
我对每种类型的单词都有一个IF语句,所以一个用于动词,副词,形容词等等,虽然从它的外观来看它检查所有组合的每个类型,每个IF语句之间的区别是什么类型正在比较动词if (!type.compare("n") == 0)
等等。
(例子)
a
the letter a
n
(blankline)
这是布局,word
,definition
,type
和blank
行,从它的外观来看它是否匹配所有组合的类型... n
v
adv
等等...我想更改此内容,以便只搜索其中任何一种组合。下面是我剥掉它的全部功能。
答案 0 :(得分:1)
由于operator precedence,您的比较存在问题。表达式
!type.compare("n") == 0
被编译器视为
(!type.compare("n")) == 0
这意味着当type
为"n"
时,表达式为false,因为!type.compare("n")
为“true”,并且不以任何方式等于零。
取而代之的是
if (type.compare("n") != 0)
{
...
}
else // No need to do `if (type.compare("n") == 0)`
{
...
}