我最近开始自学C ++,在编写了大量用户输入代码之后,让我想知道是否有一种更简单的方法来处理它。
例如,正常的做法是这样的:
#include <iostream>
using namespace std;
int inp;
int guess = 13;
void main(){
cout << "Guess a number: ";
cin >> inp;
if (inp == guess)
cout << endl << "Nice.";
}
但我想做的是:
#include <iostream>
using namespace std;
int guess = 13;
void main(){
cout << "Guess a number: ";
if (cin == guess)
cout << endl << "Even nicer.";
}
有办法做到这一点吗?或者这只是不正确的C ++标准?
答案 0 :(得分:2)
简而言之:不,不可能按照你的意愿去做。
您需要了解,>>
实际上是
template<typename T>
std::istream& operator>>(std::istream& is, T& result);
和==
是对
template<typename T>
bool operator==(const std::istream&,const T& x);
后者用于检查流状态,并且不提取任何用户输入。
要比较输入,需要从第一位std::istream
中提取结果。
答案 1 :(得分:1)
嗯,你可以在一条线上完成,但你并不是真的需要。但无论如何,这里有一些例子
//This will work for a char
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
char test = 'a';
if (getch()== test)
cout<<"\n Works";
return 0;
}
如果你真的想要
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int x =1;
int y;
for( cin >> y ; x == y ; )
{
cout<<"\n Works";
break;
}
return 0;
}
或者NathanOliver说你可以这样做
if( cin >> inp && inp == guess )
但实际上你想保持简单,因为这会在一段时间后让别人和你自己混淆。您希望尽可能简化代码