未找到“==”运算符
'==' operator not found
很明显这个程序不起作用。软件告诉我缺少“==”运算符。有人能告诉我该怎么做并解释为什么 his/her 解决方案有效吗?
#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;
}
当我们在做的时候。为什么可以在 if 语句中执行 'cin'?我会在 if 语句之前使用 'cin'。
在现代 C++ 中,可以使用 explicit operator bool
测试流的状态。这意味着它可以直接用作 if
语句中的条件,但不能隐式转换为 bool
以与 false
进行比较。所以你需要更惯用的
if (cin >> var)
测试状态。
Why is it possible to execute 'cin' in the if statemant?
因为条件可以是任何表达式,只要有可以转换为bool
的结果即可。 >>
运算符 returns 对流的引用,可以通过我上面描述的运算符进行转换。
std::istream
具有到 bool
的转换运算符,但它必须是显式的 (http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool):
explicit operator bool() const;
您可以使用显式转换运算符:
if ( (bool)(cin >> var) == false) {
cerr << "Falsche Eingabe - Keine Zahl\n";
}
或简单地使用:
if ( !(cin >> var) ) {
cerr << "Falsche Eingabe - Keine Zahl\n";
}
首先cin
不是你执行的东西,像一些其他语言的print
命令。它是 class istream 的一个对象,表示字符的标准输入流。
运算符>>
从此类流中提取格式化输入。它的原型是这样的
istream& operator>> (int& val);
意思是 returns 对 istream 本身的引用,因此您可以像
这样的链式操作
cin >> foo >> bar;
所以你不能比较 cin >> foo
的结果,它是一个引用,与常量 false
.
另一方面,运算符“!”已重载,与 fail
含义相同,因此您可以像这样检查操作是否成功
if ( ! (cin >> var) ) {
cerr << "something is going wrong" << endl;
}
很明显这个程序不起作用。软件告诉我缺少“==”运算符。有人能告诉我该怎么做并解释为什么 his/her 解决方案有效吗?
#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;
}
当我们在做的时候。为什么可以在 if 语句中执行 'cin'?我会在 if 语句之前使用 'cin'。
在现代 C++ 中,可以使用 explicit operator bool
测试流的状态。这意味着它可以直接用作 if
语句中的条件,但不能隐式转换为 bool
以与 false
进行比较。所以你需要更惯用的
if (cin >> var)
测试状态。
Why is it possible to execute 'cin' in the if statemant?
因为条件可以是任何表达式,只要有可以转换为bool
的结果即可。 >>
运算符 returns 对流的引用,可以通过我上面描述的运算符进行转换。
std::istream
具有到 bool
的转换运算符,但它必须是显式的 (http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool):
explicit operator bool() const;
您可以使用显式转换运算符:
if ( (bool)(cin >> var) == false) {
cerr << "Falsche Eingabe - Keine Zahl\n";
}
或简单地使用:
if ( !(cin >> var) ) {
cerr << "Falsche Eingabe - Keine Zahl\n";
}
首先cin
不是你执行的东西,像一些其他语言的print
命令。它是 class istream 的一个对象,表示字符的标准输入流。
运算符>>
从此类流中提取格式化输入。它的原型是这样的
istream& operator>> (int& val);
意思是 returns 对 istream 本身的引用,因此您可以像
这样的链式操作cin >> foo >> bar;
所以你不能比较 cin >> foo
的结果,它是一个引用,与常量 false
.
另一方面,运算符“!”已重载,与 fail
含义相同,因此您可以像这样检查操作是否成功
if ( ! (cin >> var) ) {
cerr << "something is going wrong" << endl;
}