Почему, когда я вошел в цикл ниже, и я набираю что-то первую команду cmdstd: getline (std :: cin, cmdInput); не считывает введенный ввод. Например, если я ввел «b 8», он должен отображать «cmd is b 8», но он переходит к следующему read std :: getline (std :: cin, input); и отображает «это b» вместоC++ STD Ошибка Cin во время цикла
while (editingMode == TRUE) {
std::getline(std::cin, cmdInput);
istringstream cmdiss(cmdInput);
cout << "you entered: " << cmdInput <<endl;
if (cmdInput != "") {
copy(istream_iterator<string>(cmdiss),
istream_iterator<string>(),
back_inserter<vector<string> >(tokens));
std::cout << "cmd is " <<tokens.at(0) << std::endl;
}
//*************************
std::getline(std::cin, input);
istringstream iss(input);
if(input != ""){
copy(istream_iterator<string>(iss),
istream_iterator<string>(),
back_inserter<vector<string> >(tokens));
std::cout << "it is " << tokens.at(0) <<std::endl;
createInstruction(tokens);
}
Довольно вероятно, что это проблема. См. Http://stackoverflow.com/questions/257091/how-do-i-flush-the-cin-buffer для получения информации об очистке ввода. Я предлагаю что-то вроде ответа Мартина Йорка, поскольку он остановится, когда достигнет первой новой строки. – qid