int n;
while(cin>>n)
cout << n; // Run by the program if received an int value
cout << "Break from loop"; // Run by the program
cin >> n; // Skipped by the program
cout << n; // Run by the program
在使用字符终止while循环后,无法接受另一个输入。
如果使用非整数/浮点值终止循环内的输入,如何接受另一个输入。
答案 0 :(得分:0)
int n;
while(cin>>n) // Keep asking for value to input
cout<<n<<"\n"; // This loop will never terminate for any Supplied val
//Above loop will terminate only when no more valued is supplied to code
// Hence once, we stopped entering the value, code will execute next line
// And end without asking for anymore value.
cout<<"Break From Loop \n";
答案 1 :(得分:0)
假设您的问题是“如何在设置流状态后恢复输入?”然后有一个简单的解释:
执行提取的while
循环仅在提取失败之前终止;这还包括当流到达输入流(EOF)的末尾时。当发生这种情况时,eofbit将被设置为蒸汽状态(以及故障位)。设置流状态时,流不能用于I / O.要再次使用它,必须清除流状态。这是使用成员函数clear(std::ios_base::iostate err = std::ios_base::goodbit)
完成的。
std::cin.clear();
该调用将清除流状态中的位并将它们分配给0
(std::ios_base::goodbit
)。在此调用之后,流可以再次用于I / O.
这假设流读取所有字符,直到达到EOF。对于在获取无效数据时终止的先前读取,这是不够的。还需要ignore()
剩余的字符。
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
答案 2 :(得分:0)
如果您没有通过返回文件结尾(即Ctrl-D
)或终止程序(即Ctrl-C
)来终止程序。
也就是说,如果您通过不正确的数据类型退出循环,例如输入字母d
而不是整数,则可以使用while
跟cin.clear()
循环和{ {1}},其中getline(cin, str)
是您提前声明的str
。
在此之后,您应该能够接受第二个string
的输入。
所以,
cin