Probleme avec cin et les chaines [Résolu]

Signaler
Messages postés
23
Date d'inscription
lundi 21 avril 2003
Statut
Membre
Dernière intervention
3 août 2004
-
Messages postés
23
Date d'inscription
lundi 21 avril 2003
Statut
Membre
Dernière intervention
3 août 2004
-
bon je sais c'est con mais quand je tape une string la fonction cin>>variable; calcule les espace comme plusieurs entrées... alors j'ai essayer cin.getline() mais (et c'est la le prob) il ingore cette commande et saute carément par dessus... jai donc essayer cin.unsetf(ios::skipws) suivi de cin>>variable; mais la encore il ignore la commande cin... si quelqu'un peut me dire pourquoi ou tout simplement trouver une autre solution pour entrer une chaine de caractère... (j'utilise dev c++ 4) merci a l'avance

8 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
float a,b,c;
cout << "Tapez 3 reel : "<<flush;
cin >> a >> b >> c;

tu pouvais le deviner si tu avais vu que l'operateur >> retourne une reference sur cin, istream& operator>> ...
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

tu ne peux plus utiliser des cin normaux une fois que tu utilises des getlines, utilise que des getlines et ca marchera
JackosKing For EvEr
Messages postés
23
Date d'inscription
lundi 21 avril 2003
Statut
Membre
Dernière intervention
3 août 2004

merci mais comment je fais pour les int et les float avec getline (peut etre que je dis une grosse bétise mais getline est seulement pour les chaines non?)
Messages postés
23
Date d'inscription
lundi 21 avril 2003
Statut
Membre
Dernière intervention
3 août 2004

merci!!! sa marche... sa fait bizzare davoir a poser une question sur le forum a propos d'une des premiere commandes que j'ai aprises! ;) j'était pourtant sur d'avoir dépasser ce stade la depuis longtemp :) en tout cas si sa peut aider des débutant ou du monde qui n'ausait pas poser la question eh bien tant mieu...

encore merci
@+
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
pourtant tu as sans doute deja fais des truc comme
cout << a << ' ' << b << ' ' << c << '\n';
ben la c'est la meme chose
Messages postés
23
Date d'inscription
lundi 21 avril 2003
Statut
Membre
Dernière intervention
3 août 2004

wais mais javais jamais utiliser flush... et puis je me suis rendu compte dune autre chose... ex:

int entier;
char chaine[10];

cout<<"entrez un entier: ";
cin>>entier; //juste la sa marche normalement

cout<<"\nentrez une chaine: "<<flush;
cin.getline(chaine,10); //mais la il saute carrément par dessus la commande

pourtant si je fais:

int entier;
char chaine[10];

cout<<"entrez une chaine: ";
cin.getline(chaine,10); //la il execute la commande

cout<<"\nentrez un entier: "<<flush;
cin>>entier; //et la aussi sa marche

bon peut etre que cest une conerie que jai fait ou bien cest mon compilateur ou bien je il faudrait que je relise mes bouquins du debut!
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
parce que par defaut cin ignore les caracteres speciaux (espaces, \n... ) et ne les prend pas dans le stream

getline prend tout

dans le premier cas getline bouffe le '\n' qui traine apres le cin>>entier, il s'arrete donc au premier '\n' lu qui est le '\n' envoyé par enter

tu pouvais faire cin.ignore(1000, '\n' ); pour le vider (1000 ou un tres grand nombre, regarde la doc pour plus d'info)
Messages postés
23
Date d'inscription
lundi 21 avril 2003
Statut
Membre
Dernière intervention
3 août 2004

ok merci je vais fouiner... cest vraiment super se site (et les gens aussi) moi je naurais jamais penser a sa...