CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] A propos du getline ;

fostre
fostre
Niveau 8
04 juillet 2012 à 15:54:27

Bonjour , je démarre la programmation est j'ai une question à propos de la fonction getline ;

voici un programme simple pour expliquer clairement le problème :

int main()
{
string nom;
int age;

cout<<"age?"<<endl;

cin>>age;
cout<<endl;

cout<<"nom ?"<<endl;
getline(cin,nom);
cout<<endl;

cout << " son age : "<<age<<" et son nom :"<<nom<<" ."<<endl;
}

lors de l’exécution du programme , le programme saute la partie saisi de du nom , alors le résultat du prog est :

son age : 14 et son nom : .

Pourquoi le programme ne veux pas lancer la fonction getline ?

godrik
godrik
Niveau 30
04 juillet 2012 à 17:44:43

Le contenu de std::cin dans ce contexte est

14\n

Lorsque tu fais le premier cin>>age; tu lis le 14, le contenu de std::cin est alors

\n

le premier charactere est un retour a la ligne, c'est ce que getline lit.

En d'autre terme il y a encore des characteres dans le buffer apres la lecture du 14, getline les lit. Et comme il y a un \n, il s'arrete a ce moment la.

Je conseille de boucler sur getline(cin,nom); tant que le nom est vide.

fostre
fostre
Niveau 8
04 juillet 2012 à 20:58:35

D'accord c'est compris :merci:

sly_ragoon
sly_ragoon
Niveau 7
05 juillet 2012 à 17:21:25

Salut,

Mon prof m'a dit d'utiliser " cin.sync(); " pour vider le cache juste avant le getline. Ca peut être plus simple que la boucle mais bien sur cela ne teste pas si le nom est vide ou pas.

godrik
godrik
Niveau 30
05 juillet 2012 à 18:47:18

Sly_ragoon, cin.sync() marche ici, mais c'est un effet de bord du buffering. Personnellement, je ne me baserai pas la dessus pour faire une application.

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment