gpt4 book ai didi

C++读了一会儿

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:15 24 4
gpt4 key购买 nike

我有一个正在从中读取数据的文件,数据的格式为[function] [number1] [number2] 其中 [number2] 是可选的!
例如。

+ 88 19  
- 29 28
! 4
+ 2 2

上面的输出:

107
1

当行的格式为 [function] [number1] [number2] 时,我的代码工作正常,但当行中不存在 [number2] 时,我的代码失败。

到目前为止我的代码:

我正在使用的库:
iostream

标准库
字符串
...

while (infile >> function >> number1>> number2)
{
switch (function)
{
case '+':

addition(number1, number2);
break;

case '-':

subtraction(number1, number2);
break;

case '!':

factorial(number1);
break;

...

如果 [number2] 不存在,我如何才能只读取 [number1] 并在下一次读取时跳回到 [function]。

感谢任何帮助,
谢谢!

最佳答案

这将是一种适应您的方法的方式,但对输入的假设较少。请记住,此代码非常特定于您选择的格式,并且 100% 相信您正在读取的文件是正确的。正如人们在评论中提到的那样,阅读该行并对其进行解析会更可靠,并且可能是您 future 应该考虑的事情。然而,这确实遵循您当前的方法,并进行了一些修改。

const bool isUnary(char function)
{
if (function == '!') return true;

// Add further unary functions here as if/switch

return false
}

int main()
{
// Only read function here
while (infile >> function)
{
// Prepare your numbers
int number1{}, number2{};

// If the function is Unary (IE: Takes one parameter)
if (isUnary(function))
{
infile >> number1; // Read the one number
}

// Otherwise read both numbers
else
{
infile >> number1;
infile >> number2;
}

// Then switch on function as you otherwise would
switch (function)
{
case '+':
addition(number1, number2);
break;
case '-':
subtraction(number1, number2);
break;
case '!':
factorial(number1);
break;
}
}

return 0;
}

关于C++读了一会儿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49392727/

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