gpt4 book ai didi

c++ - 给定斜杠c++时分隔分母和分子输入

转载 作者:行者123 更新时间:2023-11-28 06:25:39 26 4
gpt4 key购买 nike

我是 C++ 的新手,我想知道是否可以就我一直遇到的问题寻求帮助。我给定一个输入作为 A/B 类型的分数或整数值。我需要将 A 和 B 值分开,以便将它们放入 fracnum 和 fracdnum 变量中。当我给定一个整数值时,问题就来了。这是我的代码:

istream& operator >>(istream& in,  Fraction& frac){
char slash = '/' ;
int fracnum;
int fracdnum;
int peekchar;
in >>fracnum;
if(in >> slash){
in >>fracdnum;
}
else{
in.putback(slash);
fracdnum = 1;
}

frac = Fraction(fracnum, fracdnum);
return in;
}

我不知道如何拆分这两个分数以及如何处理整数。

编辑*****

我试过使用 scanf 方法,但它仍然无法正常工作,这是我的尝试,有人发现它有什么问题吗?

istream& operator >>(istream& in,  Fraction& frac){
int fracdnum;
int fracnum;
int num_read = scanf("%d/%d", &fracnum, &fracdnum);
if( num_read ==1){
fracdnum=1;
Fraction(fracnum,fracdnum);
}
else if (num_read == 2){
Fraction(fracnum,fracdnum);
}

return in;
}

这是我用于程序的测试文件:

    // Test input, exception and +=:
Fraction sum(0);
Fraction fin;
cout << "\nSumming fractions. Enter fractions as \"1/2\" or just enter a single integer." << endl;
cout << "Enter zero to end the summation:" << endl;
do {
cout << "Enter a fraction to add to sum: ";
try {
cin >> fin;
sum += fin;
} catch (FractionException &e) {
cout << e.what() << endl;
}
} while (fin != 0);
cout << "Sum is: " << sum << endl;


return 0;

} // end main

最佳答案

老实说,在这种情况下 scanf 更简单:

int num_read = scanf("%d/%d", &fracnum, &fracdnum);
if(num_read == 1) {
// scanf read one number
fracdnum = 1;
} else if(num_read == 2) {
// scanf read two numbers
} else {
// scanf read nothing: fail
}

关于c++ - 给定斜杠c++时分隔分母和分子输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28575950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com