您好,我对运算符重载相对较新,但我确实相信它是我在制作的几乎每个程序中都遇到的问题的答案。我的目标是超载std::cin >> int_var
因此它只能接受整数输入,如果它检测到输入了除 int 之外的输入,它会将用户放入循环中,直到输入是 int。
这就是我到目前为止想到的
#include <iostream>
std::istream& operator>> (std::istream& Cin, int *var)
{
int var2;
if(!Cin >> var2)
{
std::cout << "Invalid input!";
}
return Cin;
}
int main() {
int var;
std::cin >> var;
std::cout << var;
}
注意:此代码片段只是为了看看我是否可以检测到无效输入。它还不需要它来包含循环。
The correct获取用户输入的方法是:
- read a string
- 尝试将字符串转换为 int (或其他)
- if the conversion fails, you should either:
- 询问并重试,仅当已知用户是人类时
- 终止(要求您的用户提供有效的输入)
这是因为用户将always每次输入提示后按 Enter 键。
这个问题有很多不同的说法。这是我的最后一个答案,并附有一个可行的示例。 https://stackoverflow.com/a/70736592/2706707
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)