case 2: system.sell(std::cin >> input); break;这里写的不对
时间: 2024-10-16 21:04:19 浏览: 16
确实,在`case 2:`部分,如果直接使用`std::cin >> input`获取用户输入并传递给`system.sell(input)`,可能会导致问题。因为`sell`函数需要的是整数作为参数表示卖出的数量,而`std::cin >> input`会将用户输入作为一个字符串读取。
正确的做法应该是先确保用户输入的是数字,然后转换为整数再调用`sell`函数。可以使用`std::stoi`函数来完成转换。修改后的代码应该像这样:
```cpp
case 2:
{
int quantity;
std::cout << "请输入要卖出的商品数量:";
if (!(std::cin >> quantity)) { // 检查是否成功读取整数
std::cerr << "无效的输入,数量必须是整数。\n";
continue; // 如果失败,跳过这次循环,提示用户再次输入
}
system.sell(quantity);
break;
}
```
这样,只有当用户输入有效的整数时,才会尝试执行售卖操作。如果输入不是整数,程序会捕获异常并提示用户重新输入。
阅读全文