2013-10-18 25 views
0

嘿我想添加一些验证到我的程序,以确保正确的文件加载,我的验证是基于字典文件,我试图实现的东西,确保正确类型的单词是文件,如名词,动词,我写这个...执行一些验证...卡住

    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) 

这是布局,worddefinitiontypeblank线,从它的它的检查,看看长相是所有类型的组合匹配... nvadv等...我想改变这个,所以它只搜索任何一种组合。下面是我已经完成的全部功能。

+1

不要使用'系统( “暂停”)'在这样的背景下。只需退出应用程序。 – RedX

回答

1

由于operator precedence,您的比较存在问题。表达

!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)` 
{ 
    ... 
}