C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Lecture depuis une chaine

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Fabien SK
Guest





PostPosted: Mon Aug 11, 2003 8:59 am    Post subject: Lecture depuis une chaine Reply with quote



Bonjour,

J'ai une chaine de caractères comme "1234". Je voudrais lire les deux
premiers caractères vers un int, ce que fait très bien:

const char *ptoto = "1234";
int tata;
sscanf(ptoto, "%2d", &tata);

Maintenant est-il possible de faire la même chose à la mode C++ (avec un
"istringstream" par exemple, mais je n'ai pas trouvé comment limiter le
nombre de caractères en entrée pour un champs lu) de manière légère (une
ligne pour le "sscanf").

Fabien

Back to top
Michel Michaud
Guest





PostPosted: Wed Aug 13, 2003 2:19 am    Post subject: Re: Lecture depuis une chaine Reply with quote



Dans news:3f375b19$0$26847$626a54ce (AT) news (DOT) free.fr, Fabien
SK <fabsk+news (AT) free (DOT) fr> a écrit :
Quote:
Bonjour,

J'ai une chaine de caractères comme "1234". Je voudrais lire les
deux premiers caractères vers un int, ce que fait très bien:

const char *ptoto = "1234";
int tata;
sscanf(ptoto, "%2d", &tata);

Maintenant est-il possible de faire la même chose à la mode C++
(avec un "istringstream" par exemple, mais je n'ai pas trouvé
comment limiter le nombre de caractères en entrée pour un champs
lu) de manière légère (une ligne pour le "sscanf").

Le nombre de lignes est rarement un facteur intéressant. Les
amateurs d'APL te le diraient. Ceci dit, setw() est défini pour
les istream (la norme le dit explicitement) mais ne semble pas
avoir d'effet (la norme dit que width a un effet sur les sorties).
C'est curieux.

J'imagine que ceci ne te plaira pas vraiment :

string toto= "1234";
int tata;

istringstream(toto.substr(0,2)) >> tata; // Une ligne :-)

--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Back to top
Fabien SK
Guest





PostPosted: Wed Aug 13, 2003 7:35 am    Post subject: Re: Lecture depuis une chaine Reply with quote



Michel Michaud wrote:

Quote:
Dans news:3f375b19$0$26847$626a54ce (AT) news (DOT) free.fr, Fabien
SK <fabsk+news (AT) free (DOT) fr> a écrit :

Bonjour,

J'ai une chaine de caractères comme "1234". Je voudrais lire les
deux premiers caractères vers un int, ce que fait très bien:

[...]

J'imagine que ceci ne te plaira pas vraiment :

string toto= "1234";
int tata;

istringstream(toto.substr(0,2)) >> tata; // Une ligne Smile

Eh eh, non. Surtout que si je veux lire plusieurs nombres de suite
(comme dans le code qui suit), ça ne va pas.

sscanf("123456", "%2d%2d%2d", &a, &b, &c);

J'ai cherché sur google, et apparemment je ne suis pas le seul à avoir
ce problème. C'est tout simplement dommage que la méthode "width" des
"istream" ne marche pas pour les nombres entiers, c'est comme ça et tant
pis :-(

Fabien


Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.