Pages : 1
#1 Le 02/08/2013, à 10:30
- kboo
C++ cin et overflow (débutant..)
Bonjour,
Je me trouve bloqué bêtement, j'essaye de rendre plus robuste mon code:
quand je fais un "std::cin >> variable" avec variable de type int et qu' à l'exécution je rentre une valeur trop grand j'obtiens un overflow... (ça remli les autres cin...)
help!!
merci bien
Hors ligne
#2 Le 02/08/2013, à 19:30
- NicoZic56
Re : C++ cin et overflow (débutant..)
Depuis http://www.cplusplus.com/forum/articles/6046/, voici le code.
Contrairement à ce que l'on pourrait penser, ce n'est pas une question si simple...
string input = "";
// How to get a string/sentence with spaces
cout << "Please enter a valid sentence (with spaces):\n>";
getline(cin, input);
cout << "You entered: " << input << endl << endl;
// How to get a number.
int myNumber = 0;
while (true) {
cout << "Please enter a valid number: ";
getline(cin, input);
// This code converts from string to number safely.
stringstream myStream(input);
if (myStream >> myNumber) {
break;
}
cout << "Invalid number, please try again" << endl;
}
cout << "You entered: " << myNumber << endl << endl;
Le principe est de passer par getline, ce qui permet d'avoir en une seule fois tout ce qui est saisi jusqu'au caractère entrée.
============
"Il n'y a que deux sortes de langages de programmation: ceux dont les gens disent toujours du mal et ceux que personne n'utilise."
Bjarne Stroustrup
Hors ligne
#3 Le 05/08/2013, à 09:48
- kboo
Re : C++ cin et overflow (débutant..)
Salut et merci NicoZic56!
Je vais tester ça mais c'est si compliqué ?! c'est étonnant en tout cas
Hors ligne