Bonjour à tous, Je débute en c++ et je suis le tutoriel c++ moderne de zestedesavoir que j’apprécie tout particulièrement.
Lorsque je donne à Cin un réel au lieu d’un entier il garde la parti décimal dans son buffer.
Voici mon code :
#include <iostream>
#include <string>
int main() {
void lectureConsole(int& age);
void lectureConsole(double& taille);
void lectureConsole(std::string & nom);
int age{ 0 };
double taille{ 0.0 };
std::string nom{ "" };
std::cout << "quelle est votre age ?" << std::endl;
lectureConsole(age);
std::cout << "voici votre age : " << age << std::endl;
std::cout << "quelle est votre taille ?" << std::endl;
lectureConsole(taille);
std::cout << "voici votre taille : " << taille << std::endl;
}
void lectureConsole(int &variable){
while (!(std::cin >> variable))
{
std::cout << "Entrer un entier pour age"<<std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
void lectureConsole(double& variable) {
while (!(std::cin >> variable))
{
std::cout << "Entrer un reel pour taille" << std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
Voici se que j’obtiens sur la console :
quelle est votre age ?
12.5
voici votre age : 12
quelle est votre taille ?
voici votre taille : 0.5
Je ne comprend pas du tout ce phénomène ou il enregistre directement la partie entier pour le int : 12 et 0.5, a la demande d’un double sans que j’ai le temps de taper quoi que ce sois.
Comment peut on tout effacer dans le buffer ou trouver une autre stratégie ?
Merci d’avance :).
+0
-0