Maison > développement back-end > C++ > Programme C++ pour obtenir les commentaires de l'utilisateur

Programme C++ pour obtenir les commentaires de l'utilisateur

WBOY
Libérer: 2023-09-08 16:17:02
avant
1102 Les gens l'ont consulté

Programme C++ pour obtenir les commentaires de lutilisateur

Lors de l'écriture d'un programme dans n'importe quel langage de programmation, recevoir des entrées est le travail de base que nous effectuons dans presque tous les programmes. Parfois, nous obtenons des entrées directement depuis la console et parfois nous obtenons des entrées depuis un fichier. Obtenir l'entrée d'un fichier présente certains avantages car cela ne nous oblige pas à la saisir encore et encore et nous pouvons parfois enregistrer de bons cas de test d'entrée dans un fichier. Cependant, dans cet article, nous nous concentrerons sur la saisie basée sur la console. Nous apprendrons différentes techniques pour obtenir les commentaires de l'utilisateur en C++.

Il existe plusieurs manières différentes d’obtenir des informations depuis la console. Certaines d’entre elles sont des méthodes de type C, tandis que d’autres utilisent des flux d’entrée qui existent en C++. Nous les aborderons un par un et fournirons quelques exemples pour une meilleure compréhension.

Utilisez la fonction scanf() pour recevoir des entrées

En langage C, nous utilisons la fonction scanf() pour analyser l'entrée de la console sous forme de chaîne formatée. Cette fonction est également disponible en C++, donc pour recevoir des entrées de manière formatée, vous pouvez utiliser la méthode scanf().

Grammaire

Syntaxe de base de la méthode scanf(), y compris la chaîne de format.

scanf ( “<format string>”, <address of variable> );
Copier après la connexion

spécificateur de format formaté scanf().

La traduction chinoise de est :
Spécificateur de formatDescriptionDescription
%c Pour la saisie d'un seul caractère
%s Pour les chaînes sans espaces
%Bonjour Entier court signé
%hu Entier court non signé
%Lf Double long
%d Entier décimal (signé), en base 10
%i Entier (base de détection automatique)
%o Entier octal
%x Entier hexadécimal
%p Pointeur
%f Nombres à virgule flottante
La traduction chinoise de

Exemple 1

est :

Exemple 1

#include <iostream>
using namespace std;

void takeInput() {
   int x;
   char s[50]; // C like string or character array
   char c;
   float f;

   cout << "Enter an integer: ";
   scanf( "%d", &x );
   cout << "\nYou have entered an integer: " << x << endl;
   cout << "Enter a character: ";
   scanf( " %c", &c );
   cout << "\nYou have entered a character: " << c << endl;
   cout << "Enter a float value: ";
   scanf( "%f", &f );
   cout << "\nYou have entered float value: " << f << endl;
   cout << "Enter a string: ";
   scanf( "%s", s ); //string do not need address

   //convert to C++ like string from C like string
   string SCpp;
   SCpp.assign(s);
   cout << "\nYou have entered the string: " << SCpp << endl;
}

int main(){
   takeInput();
}
Copier après la connexion

Sortie

Enter an integer: 5
You have entered an integer: 5
Enter a character: K
You have entered a character: K
Enter a float value: 2.56
You have entered float value: 2.56
Enter a string: HelloWorld
You have entered the string: HelloWorld
Copier après la connexion

Dans cette méthode, cela fonctionne pour d'autres types de données, mais pour les chaînes, il n'accepte que les chaînes de type C ou les tableaux de caractères. Pour afficher une chaîne à l'aide de "cout", nous devons la convertir en un objet chaîne de type C++. Sinon, nous pouvons utiliser la fonction printf() pour afficher la sortie. Ce sont des exemples de base. Voyons maintenant l'effet du formatage de la chaîne dans l'exemple suivant.

Exemple 2

se traduit par :

Exemple 2

#include <iostream>
using namespace std;
void takeInput() {
   int dd, mm, yyyy;
   cout << "Enter a date in dd-mm-yyyy format: ";
   scanf( "%d-%d-%d", &dd, &mm, &yyyy );
   cout << "\nThe given date is: ";
   printf( "%d/%d/%d", dd, mm, yyyy );
}

int main(){
   takeInput();
}
Copier après la connexion

Sortie

Enter a date in dd-mm-yyyy format: 14-10-2022
The given date is: 14/10/2022
Copier après la connexion

Dans cet exemple, nous recevons une entrée sous la forme (jj-mm-aaaa), il n'acceptera aucun autre format pour ces trois valeurs entières. Et dans notre sortie, nous affichons la même date dans un autre format (jj/mm/aaaa). C’est à cela que sert réellement l’entrée de chaîne formatée. Ensuite, nous verrons un formulaire plus simple utilisant le flux d'entrée "cin" pour saisir directement tout type de données dans une variable spécifiée.

Utilisez cin pour recevoir des entrées en C++

cin est une classe de flux d'entrée C++ qui utilise l'opérateur d'extraction >> pour obtenir l'entrée d'un flux. Cet opérateur insère automatiquement une valeur dans la variable spécifiée en obtenant l'entrée de la console. La syntaxe est la suivante.

Grammaire

Syntaxe de base de la méthode cin

cin >> <input variable name>
Copier après la connexion
La traduction chinoise de

Exemple 1

est :

Exemple 1

#include <iostream>
using namespace std;

void takeInput() {
   int x;
   string s;
   char c;
   float f;

   cout << "Enter an integer: ";
   cin >> x;
   cout << "\nYou have entered an integer: " << x << endl;
   cout << "Enter a character: ";
   cin >> c;
   cout << "\nYou have entered a character: " << c << endl;
   cout << "Enter a float value: ";
   cin >> f;
   cout << "\nYou have entered float value: " << f << endl;
   cout << "Enter a string: ";
   cin >> s;
   cout << "\nYou have entered the string: " << s << endl;
}
int main(){
   takeInput();
}
Copier après la connexion

Sortie

Enter an integer: 8
You have entered an integer: 8
Enter a character: L
You have entered a character: L
Enter a float value: 3.14159
You have entered float value: 3.14159
Enter a string: WeAreLearningC++InputTaking
You have entered the string: WeAreLearningC++InputTaking
Copier après la connexion

Comme d'autres variables, nous pouvons utiliser la chaîne directement au lieu de l'avoir sous forme de tableau de caractères. Dans cette méthode, il attribue automatiquement l'entrée donnée à un objet chaîne. Cependant, il y a un problème avec les chaînes. Nous ne pouvons pas saisir de chaînes de plusieurs mots de cette façon. Si nous écrivons une chaîne de plusieurs mots, seul le premier mot sera pris en compte. Voyons cela dans l'exemple ci-dessous.

Exemple 2

se traduit par :

Exemple 2

#include <iostream>
using namespace std;
void takeInput() {
   string s;
   cout << "Enter a string: ";
   cin >> s;
   cout << "\nYou have entered the string: " << s << endl;
}
int main(){
   takeInput();
}
Copier après la connexion

Sortie

Enter a string: Hello World, This is a nice day
You have entered the string: Hello
Copier après la connexion

Pour surmonter ce problème, nous devons utiliser la fonction getline() pour obtenir une chaîne délimitée par des espaces. Dans cette méthode, la lecture du texte se termine lorsqu'un caractère de nouvelle ligne est rencontré.

Grammaire

getline(std::cin, <string variable>)
Copier après la connexion
La traduction chinoise de

Exemple 3

est :

Exemple 3

#include <iostream>
using namespace std;

void takeInput() {
   string s;
   cout << "Enter a string: ";
   getline(cin, s);
   cout << "\nYou have entered the string: " << s << endl;
}
int main(){
 takeInput();
}
Copier après la connexion

Sortie

Enter a string: Hello World, Have a nice day
You have entered the string: Hello World, Have a nice day
Copier après la connexion

Conclusion

Dans cet article, nous avons vu différentes utilisations de la lecture des entrées utilisateur à l'aide de la méthode scanf() et du flux cin. L'attribution d'entrées à d'autres types de variables est simple. Cependant, ni le spécificateur de format %s ni la classe cin n'acceptent les chaînes d'entrée avec des espaces. Comme le langage C, il existe une fonction désignée en C++ pour lire une chaîne avec des mots séparés par des espaces. Vous pouvez utiliser la méthode getline() pour accepter cette chaîne d'entrée. Nous pouvons également obtenir des entrées à partir de fichiers et de flux de chaînes.

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!

Étiquettes associées:
source:tutorialspoint.com
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