Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5123 connectés 

 


Dernière réponse
Sujet : [C++] Ca doit être simple mais je comprends pas...
tgrx a ma connaissance non, mais tu peux toujours faire un getline :
void getline(istream& in, string s, char delim='\n');

 

[edit]--Message édité par tgrx--[/edit]


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
tgrx a ma connaissance non, mais tu peux toujours faire un getline :
void getline(istream& in, string s, char delim='\n');

 

[edit]--Message édité par tgrx--[/edit]

janoscoder ouaip, mais si tu le flushes, tu perds aussi ce qu'il y a dedans. C'est casse couilles, mais il faut choisir ce qu'on flush.
Ce que je voulais dire, c'est que les fonctions de sortie peuvent retourner avant que la sortie soit faite. En revance, les fonctions d'entrée ont bien fait une entrée avant de retourner, donc le concept du flush n'est pas.
 
De toute manière, il faut écrite la fonction
string getlinestring(istream & in);
qui fait tout ce que l'on veut et adieu le char *.
D'ailleurs, y'a pas un moyen de choisir le délimiteur pour
in>>string?
tgrx :D
 
et puis pour reprendre ton image, quand y a que des dechets au fond de ton verre, et bien tu le nettoie avant de boire dedans :p
tgrx janoscoder> ben regarde l'exemple du haut, et ose dire que c'est pas casse couilles de vider le '\n' entre les deux instructions...
janoscoder C'est du délire votre truc. On ne flush pas un flux d'entrée: quand on utilise une fonction qui damande des données, on regarde dans le buffer si elle y sont. Et si y'a un buffer intermédiaire, on y regarde aussi. Si y'a pas de données dispo, on les attend (fc bloquante) ou non (pas bloquante).
Quand tu vas chier, comme tu tires la chasse pour évacuer tes merdes.
Quand tu vas boire dans un verre, tu prends l'eau qu'il y a, et tu ne le verses pas.
 
non mais!
minusplus bon j'ai essayé
cin << flush;
cin >> flush;
cin <> flush;
cin == flush;
cin -> flush;
cin %  flush;
cin +  flush;
flush + cin; (bah koi ?)
pow(cin, flush);
 
ben ça veut pas !
 
 
 
 
 
a ouais, c'est vrai ! http://forum.hardware.fr/sqlforum/ [...] interface=
tgrx

gilou2 a écrit a écrit :

non c'est cin.flush() :lol:




 
:sarcastic: et la marmotte... flush ca n'existe QUE pour les ostream...

gilou2 non c'est cin.flush() :lol:
BENB

tgrx a écrit a écrit :

PASKE ! KANTON FE DU C++, ON FE PA DU C !! :gun:
 
Disons que je suis devenu maniaque, et je refuse d'inclure les .h du C (comme stdio, stdlib, ...). Il faut donc trouver des solutions de remplacements en C++ :)




Moi je n'ai pas peur de dire que je fais du C/C++ :D

tgrx PASKE ! KANTON FE DU C++, ON FE PA DU C !! :gun:
 
Disons que je suis devenu maniaque, et je refuse d'inclure les .h du C (comme stdio, stdlib, ...). Il faut donc trouver des solutions de remplacements en C++ :)
BENB

tgrx a écrit a écrit :

Guz> oui mais ca c'est du C. On cherche la meme chose en C++.




Et pourquoi ne pas le faire en C ?
enfin moi je suis allergiques aux flux, et je prefere le printf... mais chacun ses gouts...

tgrx nan ca marche pas cin >> flush
deja essaye
minusplus euh pardon ! cin >> flush;
minusplus cout << flush;
 
manipulateur !
tgrx Guz> oui mais ca c'est du C. On cherche la meme chose en C++.
Guz C super simple, avant de faire un cin il faut vider le buffer du clavier par un fflush(stdin).
voila c tout.
Donc rajoute : fflush( stdin );
 
Guz.
minusplus on est sérieux nous ?
 
 
 
 
 
 
:lol:
Rasta@Icam Ok et bien merci bcp à vous tous!
Je vais laisser retomber ce petit topic et laisser travailler les personnes sérieuses. ;)
tgrx Non c'est juste qu'il se peut que sous certains environnements, le caractere '\n' ne soit pas compris comme une fin de ligne...  Et puis ce caractere est herite du C, avec printf et compagnie.
 
Juste pour dire que

Code :
  1. printf("\n" );


s'ecrit en C++

Code :
  1. cout << endl;


 
:)

Rasta@Icam C dingue quand vous parlez entre vous, g bo lire plusieurs fois, c vachement dur à comprendre, m'enfin bon, c'est le debut :)
Sinon merci tgrx, ca marche nickel le cin.get()
 
Par contre, vous me dites que endl vaut mieux que \n, c pkoi, problème dans certains compilateurs ou sous certains OS?? :??:
tgrx :lol:
minusplus même le plus roots des hacker a quelque fois envie d'envoyer tout ballader pour aller jouer à Mario Bros. sur sa nintendo ! :D
tgrx Quitte a rester dans l'abstrait, ils auraient pu definir qq chose comme ca :
 
#define ENDL_CHAR '\n'
et le mettre comme parametre par defaut dans leurs fonctions.
minusplus ben ouais mais là, c'est normal : c'est une fonction qui sera donc facilement surghargeable si le système de base change et en plus c'est un prarmètre par défaut ! (faut bien qu'à un moment, on retombe sur le système actuel, malgré l'introduction d'un max d'abstraction !)
tgrx Oui endl c'est plus propre que '\n'... meme si sur 99.999% des systemes c'est la meme chose.
 
D'ailleurs je viens d'aller faire un tour dans iostream.h pour jeter un oeil a getline, et voila ce que j'ai trouve :
 
class istream
{
...
  istream& getline(char* ptr, int len, char delim = '\n');      
};
 
Sacrilege, ils utilisent '\n'... :D
minusplus RASTA > je parle du endl à introduir dans ton flux.
tgrx Le probleme vient du fait qu'il reste un '\n' dans cin (qui provient de ta premiere entree, tu rentres un nombre puis entree, le nombre est stocke mais il reste '\n' dans cin).
 
Donc lorsque tu fais ton getline, le '\n' est considere comme une fin de ligne et ton programme continue.
Pour supprimer ce caractere genant, tu peux rajouter un  
cin.get()  
juste avant la ligne  
cout << "Quel est votre nom ?", et le programme va fonctionner.
 
Par contre, je ne sais pas comment "vider" le flux d'entree (par que faire un cin.get() c'est pas tres propre...)
Rasta@Icam "manipulateur"??????
tu sais je commence juste à m'y mettre avec le tutorial de cplusplus.com et le peu que j'ai fait, c'était du TurboPascal + "application des algorithmes vu en cours" qu'autre chose...
alors quand tu me parles de "manipulateur"..
minusplus si tu decide de faire du C++ autant en utiliser tous les atouts -> les manipulateurs sont là pour ça !
Rasta@Icam J'ai essayé pour les double quotes mais c pas ça...
Par contre tgrx, avant j'ai ça :
 
  cout << "Que voulez vous utiliser?\n";
  cout << "1) Le formateur de disque dur\n";
  cout << "2) Le test a la con\n";
  cout << "Tapez le nombre correspondant a votre choix : ";
  cin >> x;
  switch (x)
 
puis ensuite les différents cases. Le bout de code précédent correspond au tout début du case 2.
 
Il faut donc que je remmette qqch à 0 avant le cin.getline????
 
PS: Vous inquiétez pas "formateur de dd", c juste un compte à rebours, je suis pas un ptit H4ckerz Rebelz ;)

 

[edit]--Message édité par Rasta@Icam--[/edit]

levioloneux à la 5ème ligne de ton prog essaye de mettre des cotes doubles:
"\n"
tgrx T'es sur qu'il n'y a pas d'autres instructions qui precedent ton bout de code ??
A mon avis il doit rester du dechet dans cin, et donc le programme passe a travers le getline
minusplus ton code s'écrit :
char nom [100];
       cout << "Quel est votre nom? ";
       cin.getline (nom,100);
       cout << endl << "Bonjour " <<nom << endl;
       cout << "Entrez une valeur entiere : ";
       cin >> a;
       cout << endl << "Vous avez tape" << " " <<a;
Rasta@Icam Bon, voilà, j'ai trouvé un tutorial et il y a un exemple de code permettant de demander son nom à la personne puis de lui dire bonjour "machin".
Quand je le compile :
 
char mybuffer [100];
  cout << "What's your name? ";
  cin.getline (mybuffer,100);
  cout << "Hello " << mybuffer << ".\n";
 
il n'y a pas de problème, par contre quand j'essaye de faire la même chose dans mon programme :
 
char nom [100];
       cout << "Quel est votre nom? ";
       cin.getline (nom,100);
       cout << "\nBonjour " <<nom ;
       cout << '\n';
       cout << "Entrez une valeur entiere : ";
       cin >> a;
       cout << "Vous avez tape" << " " <<a;
 
il ne "s'arrête pas" et passe directement à "Entrez une valeur entière". (Et il affiche simplement "Bonjour" )
 
Voilà, désolé de vous déranger avec qqch d'aussi simple mais là je bloque franchement.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)