#include <iostream>
using namespace std;
int a, b, c, d;
void main()
{
cout << "Reading a" << endl;
cin.ignore();
// cin.clear();
cin >> a;
cout << "Reading b" << endl;
cin.ignore();
// cin.clear();
cin >> b;
cout << "Reading c" << endl;
cin.ignore();
// cin.clear();
cin >> c;
cout << a << " " << b << " " << c << endl;
system("pause");
}
Я прочитал 3 раза переменные от a до c. Он работает, когда прекращается, когда я вводим случайное число, а затем принимаю его без пробелов (23
, 45
, 66
). Однако, когда мой ввод выглядит так: 23 45 66
(промежутки между промежутками), он немедленно ставит 23
на a
, 45
на b
и 66
на c
.Правильный способ сброса ввода cin
Мое намерение состоит в том, чтобы читать число, заканчивать пробел, затем забыть остальную часть ввода и снова прочитать следующую переменную.
cin.ignore()
и cin.clear()
, похоже, не помогают мне, но, вероятно, я использую их неправильно.
Я мог бы сделать свой собственный буфер, а затем проверить его на пробелы, но прежде чем делать это, я хочу посмотреть, есть ли другой способ.
Читать всю строку с GetLine затем выполнить строку в целое преобразование с помощью стои – mikedu95
прекрасно работает и это очень быстро реализовать. Спасибо. –