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

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

WBOY
WBOYavant
2023-09-08 16:17:021070parcourir

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> );

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();
}

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

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();
}

Sortie

Enter a date in dd-mm-yyyy format: 14-10-2022
The given date is: 14/10/2022

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>
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();
}

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

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();
}

Sortie

Enter a string: Hello World, This is a nice day
You have entered the string: Hello

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>)
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();
}

Sortie

Enter a string: Hello World, Have a nice day
You have entered the string: Hello World, Have a nice day

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer