0

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

                    if (!type.compare("n") == 0) {
                    cout << "\nType is invalid please check file.\n" << endl;
                    system("Pause");
                }

我对每种类型的单词都有一个 IF 语句,所以一个用于动词、副词、形容词等,尽管从它的外观来看,它检查每种类型的所有组合,每个 IF 语句之间的区别在于比较的是什么类型动词 it would beif (!type.compare("n") == 0)等等。

(一个例子)

a
the letter a
n
(blankline)

这是布局,,word和一条线,从它的外观来看,它正在检查类型是否匹配所有组合......等等......我想改变它,所以它只搜索任何一个组合。下面是我剥离的完整功能。definitiontypeblankn v adv

4

1 回答 1

1

由于运算符优先级,您的比较有问题。表达方式

!type.compare("n") == 0

编译器将其视为

(!type.compare("n")) == 0

这意味着当表达式type"n"假时,!type.compare("n")“真”也是如此,并且无论如何都不等于零。

而是做

if (type.compare("n") != 0)
{
    ...
}
else // No need to do `if (type.compare("n") == 0)`
{
    ...
}
于 2013-10-18T14:30:48.517 回答