Pourquoi quand je suis entré dans la boucle ci-dessous et je tape quelque chose la première instruction cmdstd: getline (std :: cin, cmdInput); ne lit pas l'entrée entrée. Par exemple, si j'ai entré "b 8", il devrait afficher "cmd is b 8", mais il passe à la lecture suivante std :: getline (std :: cin, input); et affiche "c'est b" à la placeerreur C++ STD Cin dans while
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);
}
Assez probable que ce soit le problème. Voir http://stackoverflow.com/questions/257091/how-do-i-flush-the-cin-buffer pour plus d'informations sur la suppression de l'entrée. Je suggère quelque chose comme la réponse de Martin York, car elle s'arrêtera quand elle atteindra la première ligne. – qid