C++ 预定义>&燃气轮机;c+中的运算符+;跳过';(';和';)';
如何在类之外预定义运算符C++ 预定义>&燃气轮机;c+中的运算符+;跳过';(';和';)';,c++,operator-overloading,cin,C++,Operator Overloading,Cin,如何在类之外预定义运算符>,以便我可以这样做: Num number(0,0); cin >> number; // input is "(1,2)" 我想在1上使用set\u num1(num1)函数,在2上使用set\u num2(num2)函数。 因此,在末尾的数字应该是数字(1,2)。操作员应跳过(,)并在读取时仅获取数字值,无需任何验证。在读取Num类时忽略'(“,,”)字符: std::istream& operator>>(std::istrea
>
,以便我可以这样做:
Num number(0,0);
cin >> number; // input is "(1,2)"
我想在1上使用set\u num1(num1)
函数,在2上使用set\u num2(num2)
函数。
因此,在末尾的数字应该是数字(1,2)
。操作员应跳过(,)并在读取时仅获取数字值,无需任何验证。在读取Num
类时忽略'(“
,,”)
字符:
std::istream& operator>>(std::istream& is, Num& num) {
cin.get(); // ignore '('
int n{0};
cin >> n;
num.set_num1(n);
cin.get(); // ignore ','
cin >> n;
num.set_num2(n);
cin.get(); // ignore ')'
return is;
}
请注意,此代码不会对输入进行任何验证。在阅读Num
类时,只需忽略(“
,,”
,)”
字符:
std::istream& operator>>(std::istream& is, Num& num) {
cin.get(); // ignore '('
int n{0};
cin >> n;
num.set_num1(n);
cin.get(); // ignore ','
cin >> n;
num.set_num2(n);
cin.get(); // ignore ')'
return is;
}
请注意,此代码对输入没有任何验证。您可以使用它,例如std::scanf((%d,%d)”、&num1和&num2)
或您可以使用,但我想将其实现为>>运算符。请查看标准标题中的此可能的重复项
中有一个运算符可以读取复数,可选格式为(1,2)
。可以给你一些启发。你可以使用它,例如,std::scanf((%d,%d)”,&num1,&num2)
或您可以使用,但我想将其实现为>>运算符。请查看标准标题中的此可能的重复项
中有一个运算符可以读取复数,可选格式为(1,2)
。可以给你一些启发。