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)
。可以给你一些启发。