Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment lire simplement une ligne sur le flot d'entrée cin et la mettre dans une string ?

4 réponses
Avatar
Eric Bart
Bonjour,

j'ai trouvé ça dans le fichier "/usr/include/c++/3.3.1/iostream" :

get(__streambuf_type& __sb)
{ return this->get(__sb, this->widen('\n')); }

Comment l'utiliser avec une simple string ?

Merci

4 réponses

Avatar
Jean-Marc Bourguet
"Eric Bart" writes:


#include <iostream>
#include <string>

std::string s;
std::getline(std::cin, s);
if (!std::cin) {
// probleme de lecture a traiter
} else {
...
}

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
Avatar
giova
Jean-Marc Bourguet wrote:

"Eric Bart" writes:


#include <iostream>
#include <string>

std::string s;
std::getline(std::cin, s);
if (!std::cin) {
// probleme de lecture a traiter
} else {
...
}

A+

ou bien plus simple a coder mais pose probleme si le texte saisie

comprend des séparateurs tel que caratere espace, tabulation, etc...

#include <iostream>
#include <string>

using namespace std; //evite d'avoir a taper std:: a tout bout de champ ;)
string s;
cout<<"tape un truc puis touche entrée : ";
cin>>s;

Avatar
Eric Bart
Ouais super. Merci.
Avatar
Michel Michaud
Dans news:, Jean-Marc
std::getline(std::cin, s);
if (!std::cin) {
// probleme de lecture a traiter
} else {
...
}


Il me semble que l'idiome consacré (qui, je le sais,
revient strictement au même) serait plutôt

if ( ! getline(cin, s))
{
// Problème de lecture à traiter
...
}
else
{
// s a été lu...
...
}

ou encore

if (getline(cin, s))
{
// s a été lu...
...
}
else
{
// Problème de lecture à traiter
...
}

Il y a là une vision d'un getline indiquant sa réussite,
alors que if (!cin) me paraît plus artificiel et plus C
que C++. Dans les deux cas, c'est en fait cin.fail() qui
est testé indirectement. J'accepterais d'ailleurs plus
volontier if (cin.fail()) que if (!cin)...

(J'espère ne pas ouvrir ici une guerre de religion !)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/