所以我没有对一个任务问题进行简单的输入测试。我要解析由空格分隔的两个整数。这两个整数用在我定义为类的Rationalnumber类型的私有成员num和denom中。我在使用此代码时是否存在非常规的非常规内容?此代码适用于我的所有测试。
std::istream &operator>>( std::istream &is, Rationalnumber &r ) {
Rationalnumber::in++; // increment counter
// get the num
string n;
getline(cin,n,' ');
stringstream ssnum(n);
ssnum >> r.num;
// get the denom
string d;
getline(cin,d,'\n');
stringstream ssdenom(d);
ssdenom >> r.denom;
return is;
}
答案 0 :(得分:1)
您的代码至少在两个显而易见的方面失败了:
'\t'
,则代码无法识别它。"a b"
而不是数字时。传统上,当输入失败时,valuevread保持不变。对于您的实现,情况也是如此。为了解决问题,代码实际上可以简化并在此过程中变得更加笨拙。由于这显然是家庭作业,我认为提供代码并不合适。