嘿,我正在尝试向程序中添加一些验证以确保加载了正确的文件,我的验证是基于词典文件的,并且我正在尝试实现一些方法来确保文件中包含正确的单词类型,例如名词和动词,我已经写了这个...
if (!type.compare("n") == 0) {
cout << "\nType is invalid please check file.\n" << endl;
system("Pause");
}
我对每种类型的单词都有一个IF语句,因此对于动词,副词,形容词等都有一个IF语句,尽管从它的外观来看,它会检查所有组合的每种类型,但每个IF语句之间的区别在于要比较的是哪种类型动词应为
if (!type.compare("n") == 0)
等。(一个例子)
a
the letter a
n
(blankline)
这是布局,
word
,definition
,type
和一条blank
行,从它的外观中检查它的类型是否匹配所有组合... n
v
和ect ...我想更改此设置,以便它仅搜索任何一种组合。下面是我将其简化的全部功能。 最佳答案
由于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)`
{
...
}
关于c++ - 实现一些验证…卡住了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19452186/