cin и getline()
Здравейте,
въвеждам от конзолата много променливи от различен тип.
След n-тото ввеждане, cin и getline отказаха да ми приемат входа и програмата ги подминава , без да търси въвеждане. Конзолата в този момент не приема нищо като се опитвам да въведа choice, иначе курсорът е на позицията, но не може да се въведе, а програмата вече е подминала реда в кода.
За да видя все пак с getline какво взема, се оказа празен стринг. Какви ли варианти не пробвах, чистя буфера, презастраховам се , но не:
//std::cin >> std::noskipws;
//std::cin >> choice;
//std::cin.ignore(10, '\n');
std::cin.ignore(100, '\n');
//std::cin.ignore();
std::cin.sync();
std::string line;
getline(std::cin, line);
if (line.empty()) {
std::cout << "Your choice: "; //и пак да видя какво се случва
std::istringstream iss(line);
iss >> choice;
}
std::istringstream iss(line);
iss >> choice;
Какъв е този проблем и как да го реша? Някой имал ли е подобен случай?
Какво ли не пробвах, изчетох доста материали в нета, но нищо.
Какви са правилата при четене на вход, които да ни застраховат от подобни проблеми?