„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie verarbeitet „cin“ Eingaben in C++ und warum wird „getline()“ zum Lesen ganzer Zeilen bevorzugt?

Wie verarbeitet „cin“ Eingaben in C++ und warum wird „getline()“ zum Lesen ganzer Zeilen bevorzugt?

Veröffentlicht am 13.11.2024
Durchsuche:609

How does `cin` handle input in C   and why is `getline()` preferred for reading entire lines?

C-Eingabestream-Verhalten mit „cin“

Beim Lesen von Eingaben mit dem „cin“-Stream in C ist es wichtig zu verstehen, wie es funktioniert interagiert mit verschiedenen Datentypen. Standardmäßig liest „cin“ jeweils ein Wort, was beim Umgang mit Zeichenarrays oder Zeichenfolgen zu unerwartetem Verhalten führen kann.

Im bereitgestellten Codebeispiel ist die Methode „input()“ in der Datei „String " Klasse verwendet „cin >> str;“ um die Eingabezeichenfolge zu lesen. Diese Anweisung erfasst jedoch nur ein einzelnes Wort und ignoriert alle nachfolgenden Wörter in der Eingabe. Wenn die Eingabe mehrere Wörter enthält, beispielsweise „steve hawking“, wird daher nur das erste Wort, „steve“, im Array „str“ gespeichert.

Lösung: Verwenden von getline( ) zum Lesen vollständiger Zeilen

Um eine vollständige Eingabezeile in ein Zeichenarray einzulesen, kann die Funktion „getline()“ anstelle von „cin >>“ verwendet werden. Hier ist die aktualisierte Eingabemethode mit „getline()“:

void input()
{
    cout 

"getline()" benötigt zwei Argumente: einen Zeiger auf das Zielarray und die Größe des Arrays. Es liest die Eingabe, bis ein Zeilenumbruchzeichen gefunden wird, und erfasst so effektiv die gesamte Eingabezeile.

Zusätzliche Überlegungen

Es ist erwähnenswert, dass die Verwendung von Zeichenarrays zur Zeichenfolgenmanipulation möglich ist umständlich und fehleranfällig. Die C-Standardbibliothek stellt die Klasse „std::string“ bereit, die einen robusteren und typsichereren Ansatz für die String-Verarbeitung bietet. Anstatt Zeichenarrays zu verwenden, könnte der Code wie folgt umgeschrieben werden:

#include 
#include 

class String
{
public:
    std::string str;

    void input()
    {
        cout 

Schließlich ist die Verwendung von Header-Dateien wie „iostream.h“ und „conio.h“ veraltet. Moderne C-Entwicklung sollte Header-Dateien wie „iostream“ bzw. „conio“ verwenden.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3