J'ai un petit soucis avec un problème qui doit être classique. Je dois
stocker une phrase qui est entré par l'utilisateur dans la console. La
chaine est stocké dans un objet de type string.
J'utilise pour l'instant
std::string robert;
std::cin >> robert;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen
de contourner ce problème proprement en gardant la classe string?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
Nicolas Haller writes:
Bonjour,
J'ai un petit soucis avec un problème qui doit être classique. Je dois stocker une phrase qui est entré par l'utilisateur dans la console. La chaine est stocké dans un objet de type string.
J'utilise pour l'instant
std::string robert; std::cin >> robert;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen de contourner ce problème proprement en gardant la classe string?
std::getline(std::cin, robert)
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Nicolas Haller <Gaasmann@boiteameuh.org> writes:
Bonjour,
J'ai un petit soucis avec un problème qui doit être classique. Je dois
stocker une phrase qui est entré par l'utilisateur dans la console. La
chaine est stocké dans un objet de type string.
J'utilise pour l'instant
std::string robert;
std::cin >> robert;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen
de contourner ce problème proprement en gardant la classe string?
std::getline(std::cin, robert)
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
J'ai un petit soucis avec un problème qui doit être classique. Je dois stocker une phrase qui est entré par l'utilisateur dans la console. La chaine est stocké dans un objet de type string.
J'utilise pour l'instant
std::string robert; std::cin >> robert;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen de contourner ce problème proprement en gardant la classe string?
std::getline(std::cin, robert)
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Patrick Mézard
Nicolas Haller wrote:
Bonjour,
J'ai un petit soucis avec un problème qui doit être classique. Je dois stocker une phrase qui est entré par l'utilisateur dans la console. La chaine est stocké dans un objet de type string.
J'utilise pour l'instant
std::string robert; std::cin >> robert;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen de contourner ce problème proprement en gardant la classe string?
J'ai un petit soucis avec un problème qui doit être classique. Je dois
stocker une phrase qui est entré par l'utilisateur dans la console. La
chaine est stocké dans un objet de type string.
J'utilise pour l'instant
std::string robert;
std::cin >> robert;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen
de contourner ce problème proprement en gardant la classe string?
J'ai un petit soucis avec un problème qui doit être classique. Je dois stocker une phrase qui est entré par l'utilisateur dans la console. La chaine est stocké dans un objet de type string.
J'utilise pour l'instant
std::string robert; std::cin >> robert;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen de contourner ce problème proprement en gardant la classe string?
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen de contourner ce problème proprement en gardant la classe string?
std::getline(std::cin, robert)
Cool, merci bien.
A bientôt
Nicolas Haller
Alexandre
bonjour,
std::string robert; std::cin >> robert;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen de contourner ce problème proprement en gardant la classe string?
il ne faut pas utiliser l'opérateur >> car il s'arrete sur espace, tab et return. A la place il faut utiliser istream::getline, mais getline attend un char* et une taille de buffer.... donc pas une string... Une solution (pas très bonne mais bon)
const int TailleMaxi = 256; char *buffer; buffer = new char[TailleMaxi+1]; std::cin.getline(buffer,TailleMaxi); std::string robert = buffer; delete buffer;
Merci
Nicolas Haller
bonjour,
std::string robert;
std::cin >> robert;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen
de contourner ce problème proprement en gardant la classe string?
il ne faut pas utiliser l'opérateur >> car il s'arrete sur espace, tab et
return.
A la place il faut utiliser istream::getline, mais getline attend un char*
et une taille de buffer.... donc pas une string...
Une solution (pas très bonne mais bon)
const int TailleMaxi = 256;
char *buffer;
buffer = new char[TailleMaxi+1];
std::cin.getline(buffer,TailleMaxi);
std::string robert = buffer;
delete buffer;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen de contourner ce problème proprement en gardant la classe string?
il ne faut pas utiliser l'opérateur >> car il s'arrete sur espace, tab et return. A la place il faut utiliser istream::getline, mais getline attend un char* et une taille de buffer.... donc pas une string... Une solution (pas très bonne mais bon)
const int TailleMaxi = 256; char *buffer; buffer = new char[TailleMaxi+1]; std::cin.getline(buffer,TailleMaxi); std::string robert = buffer; delete buffer;
Merci
Nicolas Haller
Jean-Marc Bourguet
"Alexandre" writes:
bonjour,
std::string robert; std::cin >> robert;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen de contourner ce problème proprement en gardant la classe string?
il ne faut pas utiliser l'opérateur >> car il s'arrete sur espace, tab et return. A la place il faut utiliser istream::getline, mais getline attend un char* et une taille de buffer.... donc pas une string...
A nouveau std::getline A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
"Alexandre" <alex.g@netcourrier.com> writes:
bonjour,
std::string robert;
std::cin >> robert;
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen
de contourner ce problème proprement en gardant la classe string?
il ne faut pas utiliser l'opérateur >> car il s'arrete sur
espace, tab et return. A la place il faut utiliser
istream::getline, mais getline attend un char* et une
taille de buffer.... donc pas une string...
A nouveau
std::getline
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Mais la lecture s'arrête dès le première espace. Est-ce qu'il y a moyen de contourner ce problème proprement en gardant la classe string?
il ne faut pas utiliser l'opérateur >> car il s'arrete sur espace, tab et return. A la place il faut utiliser istream::getline, mais getline attend un char* et une taille de buffer.... donc pas une string...
A nouveau std::getline A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org