嘿,我正在尝试向程序中添加一些验证以确保加载了正确的文件,我的验证是基于词典文件的,并且我正在尝试实现一些方法来确保文件中包含正确的单词类型,例如名词和动词,我已经写了这个...

                    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)


这是布局,worddefinitiontype和一条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/

10-16 04:51