gpt4 book ai didi

c++ - 不能使用 cin 两次,cin.clear 和 cin.ignore 也不起作用

转载 作者:太空狗 更新时间:2023-10-29 23:05:20 27 4
gpt4 key购买 nike

我是 C++ 编程新手,遇到了障碍。这是我的代码:

#include <iostream>
using namespace std;

int main(){

int sum = 0, a;
cout << "enter first set of numbers:";
while(cin >> a) sum += a;
cout << "first sum = " << sum;
cin.clear();
cin.ignore( numeric_limits<streamsize>::max(), '\n');

sum = 0;
cout << "enter second set of numbers:";
while(cin >> a) sum += a;
cout << "second sum = " << sum;
}

我正在尝试对我在命令行输入的两组数字求和。问题是,当我按 ctrl-d 终止我的第一组数字时,它会跳过第二组 cin。我在 Internet 其他地方找到的大部分页面都告诉我使用 cin.clear 和 cin.ignore。我试过了,但还是不行。本页question concerning cin.clear()甚至似乎有同样的问题。但是,他们建议的修复方法对我不起作用。

上面的代码对其他人有用吗?

最佳答案

当您使用 Ctrl-D 时,您终止了输入流:没有更多的字符来自 std::cin。即使清除流也无济于事:您已经告诉流它已经结束了。你不能重新打开它。但是,clear()流并使用 ignore() 是您问题的解决方案!

您需要一个不同的指标来表明一组值已完成。最简单的方法是使用非数字字符或字符串:尝试读取不是 int 的内容将导致流进入故障模式 [无需关闭流]。也就是说,您一直阅读直到转换失败,clear() 流,ignore() 直到行尾的所有内容。

您的代码应该已经这样做了:不要使用 Ctrl-D,只需输入,例如 x

关于c++ - 不能使用 cin 两次,cin.clear 和 cin.ignore 也不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19968706/

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