Heim  >  Artikel  >  Backend-Entwicklung  >  C++-Programm, um Eingaben vom Benutzer zu erhalten

C++-Programm, um Eingaben vom Benutzer zu erhalten

WBOY
WBOYnach vorne
2023-09-08 16:17:021060Durchsuche

C++-Programm, um Eingaben vom Benutzer zu erhalten

Wenn wir ein Programm in einer beliebigen Programmiersprache schreiben, ist das Empfangen von Eingaben die grundlegende Aufgabe, die wir in fast allen Programmen erledigen. Manchmal erhalten wir Eingaben direkt von der Konsole und manchmal erhalten wir Eingaben aus einer Datei. Eingaben aus einer Datei zu erhalten hat gewisse Vorteile, da wir sie nicht immer wieder eingeben müssen und manchmal können wir einige gute Eingabetestfälle in einer Datei speichern. In diesem Artikel konzentrieren wir uns jedoch auf die konsolenbasierte Eingabe. Wir lernen verschiedene Techniken kennen, um in C++ Eingaben vom Benutzer zu erhalten.

Es gibt verschiedene Möglichkeiten, Eingaben von der Konsole zu erhalten. Einige davon sind C-ähnliche Methoden, während andere Eingabeströme verwenden, die in C++ vorhanden sind. Wir werden sie einzeln behandeln und einige Beispiele zum besseren Verständnis bereitstellen.

Verwenden Sie die Funktion scanf(), um Eingaben zu empfangen

In der Sprache C verwenden wir die Funktion scanf(), um die Eingabe von der Konsole in Form einer formatierten Zeichenfolge zu scannen. Diese Funktion ist auch in C++ verfügbar. Um Eingaben formatiert zu empfangen, können Sie die Methode scanf() verwenden.

Grammatik

Grundlegende Syntax der scanf()-Methode, einschließlich Formatzeichenfolge.

scanf ( “<format string>”, <address of variable> );

scanf() formatierter Formatbezeichner.

Die chinesische Übersetzung von lautet:
FormatbezeichnerBeschreibungBeschreibung
%c Für die Eingabe einzelner Zeichen
%s Für Zeichenfolgen ohne Leerzeichen
%Hallo Kurze Ganzzahl mit Vorzeichen
%hu Kurze Ganzzahl ohne Vorzeichen
%Lf Langes Doppel
%d Dezimalzahl (mit Vorzeichen), Basis 10 angenommen
%i Ganzzahl (Basis automatisch erkennen)
%o Oktale Ganzzahl
%x Hex-Ganzzahl
%p Zeiger
%f Gleitkommazahlen
Die chinesische Übersetzung von

Beispiel 1

lautet:

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

Ausgabe

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

Diese Methode funktioniert für andere Datentypen, akzeptiert jedoch für Zeichenfolgen nur C-ähnliche Zeichenfolgen oder Zeichenarrays. Um einen String mit „cout“ anzuzeigen, müssen wir ihn in ein C++-ähnliches String-Objekt konvertieren. Andernfalls können wir die Funktion printf() verwenden, um die Ausgabe anzuzeigen. Dies sind grundlegende Beispiele. Sehen wir uns nun die Auswirkung der Formatierung der Zeichenfolge im nächsten Beispiel an.

Beispiel 2

wird übersetzt als:

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

Ausgabe

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

In diesem Beispiel erhalten wir Eingaben im Format (TT-MM-JJJJ). Für diese drei Ganzzahlwerte wird kein anderes Format akzeptiert. Und in unserer Ausgabe zeigen wir dasselbe Datum in einem anderen Format an (TT/MM/JJJJ). Dafür ist die formatierte String-Eingabe eigentlich gedacht. Als nächstes sehen wir uns ein einfacheres Formular an, das den Eingabestream „cin“ verwendet, um beliebige Datentypen direkt in eine angegebene Variable einzugeben.

Verwenden Sie cin, um Eingaben in C++ zu empfangen

cin ist eine C++-Eingabestream-Klasse, die den Extraktionsoperator >> verwendet, um Eingaben aus einem Stream abzurufen. Dieser Operator fügt automatisch einen Wert in die angegebene Variable ein, indem er Eingaben von der Konsole erhält. Die Syntax ist wie folgt.

Grammatik

Grundlegende Syntax der Cin-Methode

cin >> <input variable name>
Die chinesische Übersetzung von

Beispiel 1

lautet:

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

Ausgabe

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

Wie andere Variablen können wir die Zeichenfolge direkt verwenden, anstatt sie als Zeichenarray zu haben. Bei dieser Methode wird die gegebene Eingabe automatisch einem String-Objekt zugewiesen. Allerdings gibt es ein Problem mit Saiten. Auf diese Weise können wir keine Zeichenfolgen mit mehreren Wörtern eingeben. Wenn wir eine Zeichenfolge mit mehreren Wörtern schreiben, wird nur das erste Wort benötigt. Sehen wir uns dies im folgenden Beispiel an.

Beispiel 2

wird übersetzt als:

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

Ausgabe

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

Um dieses Problem zu lösen, müssen wir die Funktion getline() verwenden, um eine durch Leerzeichen getrennte Zeichenfolge zu erhalten. Bei dieser Methode wird das Lesen des Textes beendet, wenn ein Zeilenumbruchzeichen gefunden wird.

Grammatik

getline(std::cin, <string variable>)
Die chinesische Übersetzung von

Beispiel 3

lautet:

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

Ausgabe

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

Fazit

In diesem Artikel haben wir verschiedene Verwendungsmöglichkeiten für das Lesen von Benutzereingaben mithilfe der Methode scanf() und des Cin-Streams gesehen. Die Zuweisung von Eingängen zu anderen Variablentypen ist unkompliziert. Allerdings akzeptieren weder der Formatbezeichner %s noch die Klasse cin Eingabezeichenfolgen mit Leerzeichen. Wie in der Sprache C gibt es in C++ eine spezielle Funktion zum Lesen einer Zeichenfolge mit durch Leerzeichen getrennten Wörtern. Sie können die Methode getline() verwenden, um diese Eingabezeichenfolge zu akzeptieren. Wir können auch Eingaben aus Dateien und String-Streams erhalten.

Das obige ist der detaillierte Inhalt vonC++-Programm, um Eingaben vom Benutzer zu erhalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen