Maison > développement back-end > C++ > Pourquoi `getline()` ignore-t-il l'entrée après la lecture d'un entier en C ?

Pourquoi `getline()` ignore-t-il l'entrée après la lecture d'un entier en C ?

DDD
Libérer: 2024-12-22 22:28:13
original
359 Les gens l'ont consulté

Why Does `getline()` Skip Input After Reading an Integer in C  ?

Problèmes de saisie avec getline()

Dans un programme C, vous pouvez rencontrer un comportement particulier lors de l'utilisation de getline() pour lire les entrées de l'utilisateur . Plus précisément, si vous demandez un entier, suivez-le avec getline(cin, str), puis un autre entier, vous remarquerez que « Entrer le numéro de compte » apparaît avant de pouvoir saisir « str ».

Cela se produit car getline() capture également le caractère de nouvelle ligne entré après le premier entier. Pour éviter cela, vous pouvez demander à cin d'ignorer les espaces avant de lire « str ». Voici comment :

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
getline(cin, str);
Copier après la connexion

Ici, cin.ignore() ignore tout espace, y compris la nouvelle ligne, avant que getline() ne lise l'entrée de l'utilisateur.

Vous pouvez également utiliser cin.get () pour lire et supprimer explicitement le caractère de nouvelle ligne :

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin.get();
getline(cin, str);
Copier après la connexion

Cette approche garantit que la nouvelle ligne est consommée et getline() n'essaie pas de le lire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal