Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ '==';找不到操作员_C++_If Statement_Operator Keyword - Fatal编程技术网

C++ '==';找不到操作员

C++ '==';找不到操作员,c++,if-statement,operator-keyword,C++,If Statement,Operator Keyword,很明显,这个prgoram不起作用。软件告诉我缺少“==”运算符。有人能告诉我该怎么做,并解释他/她的解决方案为什么有效吗 #include <iostream> using namespace std; int main() { int var{ 0 }; cout << "Bitte eine Ganzzahl eingeben: "; if ((cin >> var) == false) { cerr <

很明显,这个prgoram不起作用。软件告诉我缺少“==”运算符。有人能告诉我该怎么做,并解释他/她的解决方案为什么有效吗

#include <iostream>
using namespace std;

int main() {

    int var{ 0 };

    cout << "Bitte eine Ganzzahl eingeben: ";
    if ((cin >> var) == false) {
        cerr << "Falsche Eingabe - Keine Zahl\n";
        exit(1);
    }


    system("pause");
    //return 0;
}
#包括
使用名称空间std;
int main(){
int var{0};
cout>var)==false){

在C++中,流的状态可以用<代码>显式操作符BoOL/代码>进行测试,这意味着它可以直接用作<代码>中的条件,如果语句,但不能隐式转换为<代码>布尔O/COD>与“代码>伪相比。因此,您需要更为习惯的

if (cin >> var)
来测试状态

为什么可以在if语句中执行“cin”


因为条件可以是任何表达式,只要它的结果可以转换为
bool
>
运算符返回对流的引用,该引用可以通过我上面描述的运算符进行转换。

std::istream
具有转换运算符,但它必须是显式的():

可以使用显式转换运算符:

if ( (bool)(cin >> var) == false) {
    cerr << "Falsche Eingabe - Keine Zahl\n";
}
if((bool)(cin>>var)=false){
cerr>var){

cerrFirst
cin
不是您执行的东西,比如一些其他语言的
print
命令。它是表示字符标准输入流的istream类的对象

操作符
>
从这些流中提取格式化输入

istream& operator>> (int& val);
这意味着它将返回对istream本身的引用,这样您就可以像

cin >> foo >> bar;
因此,您无法将作为参考的
cin>>foo
的结果与常量
false
进行比较

另一方面,运算符“!”重载,其含义与
fail
相同,因此您可以检查操作是否成功,如下所示

if ( ! (cin >> var) ) {
   cerr << "something is going wrong" << endl;
}
if(!(cin>>var)){

cerr这对我来说很好。@MooseBoys它只在C++11之前编译,因为它将使用
void*
bool
隐式转换。@MooseBoys:它将使用过时的标准库(其中流转换为指针类型,而不是
bool
),但不是现代的库(显式转换为
bool
)。显然IDEOne不兼容-它被设置为C++14模式并且仍然可以工作。当然,cl.exe会抱怨。第一句意思是:输入一个整数。第二句意思是:输入错误。但我认为这与此无关,
cin >> foo >> bar;
if ( ! (cin >> var) ) {
   cerr << "something is going wrong" << endl;
}