我正在进行重载>>对于分数类,需要处理几种不同类型的输入。示例:1/2(常规分数),2 + 3/4(混合数),2(整数)。教授在下面提供了一个提示,说我们需要使用peek()函数来弄清楚整数之后的第二个字符是什么。那么这意味着temp
需要被声明为int吗?我的问题是,如果temp是一个int,你怎么得到分数的其余部分(当它不是整数时)?
根据我的经验,我会将temp声明为字符串,而不是使用peek。但是,自从教授建议以来,int和peek方法必须有一些优点。
in >> temp;
if (in.peek() == '+'){
doSomething...
} else if (in.peek() == '/'){
doSomethingElse...
} else {
doThirdOption
}
答案 0 :(得分:0)
在这里,当你使用in>>temp
时,它将获得所有数字,直到遇到一些非数字字符。目前,使用peek()
,您可以检查下一个字符是'+'
还是'/'
。
在任何一种情况下,您都必须从输入中读取另一个数字流并重复此过程。
一旦用户点击进入,您就拥有了所有号码,并且可以执行所需的操作。
另外,如果你必须计算分数的值,你可能最好使用float或double数据类型而不是int。