Comportement du flux d'entrée C avec "cin"
Lors de la lecture d'une entrée à l'aide du flux "cin" en C, il est important de comprendre comment il interagit avec différents types de données. Par défaut, "cin" lit un mot à la fois, ce qui peut entraîner un comportement inattendu lors du traitement de tableaux de caractères ou de chaînes.
Dans l'exemple de code fourni, la méthode "input()" dans le fichier "String " La classe utilise "cin >> str;" pour lire la chaîne d'entrée. Cependant, cette instruction ne capture qu'un seul mot, ignorant les mots suivants dans l'entrée. Par conséquent, lorsque l'entrée contient plusieurs mots, tels que « Steve Hawking », seul le premier mot, « Steve », est stocké dans le tableau « str ».
Solution : Utilisation de getline( ) pour lire des lignes complètes
Pour lire une ligne complète d'entrée dans un tableau de caractères, la fonction "getline()" peut être utilisée à la place de "cin >>". Voici la méthode de saisie mise à jour en utilisant "getline()":
void input()
{
cout "getline()" prend deux arguments : un pointeur vers le tableau de destination et la taille du tableau. Il lit l'entrée jusqu'à ce qu'un caractère de nouvelle ligne soit rencontré, capturant ainsi la totalité de la ligne d'entrée.
Considérations supplémentaires
Il convient de noter que l'utilisation de tableaux de caractères pour la manipulation de chaînes peut être fastidieux et sujet aux erreurs. La bibliothèque standard C fournit la classe « std::string », qui offre une approche plus robuste et plus sûre de la gestion des chaînes. Au lieu d'utiliser des tableaux de caractères, le code pourrait être réécrit comme :
#include
#include
class String
{
public:
std::string str;
void input()
{
cout Enfin, l'utilisation de fichiers d'en-tête comme "iostream.h" et "conio.h" est obsolète. Le développement C moderne devrait utiliser des fichiers d'en-tête tels que "iostream" et "conio", respectivement.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3