„cin“ liest nur das erste Wort in C: Erläuterungen und Lösungen
Im bereitgestellten Codeausschnitt ist der Cin-Stream-Operator Wird verwendet, um Eingaben in das Zeichenarray str einzulesen. Es liest jedoch nur das erste Wort der Eingabe, was zu einem unvollständigen String-Abruf führt.
Warum sich cin so verhält
Standardmäßig liest cin Zeichen der Reihe nach und trennt sie Eingabe basierend auf Leerzeichen (z. B. Leerzeichen, Tabulatoren). Wenn es auf ein Leerzeichen trifft, betrachtet es die Eingabesequenz als abgeschlossen und geht zur nächsten Eingabe über.
Lösung 1: cin.getline() für Char-Arrays
Zu Um eine ganze Eingabezeile zu lesen, können wir anstelle von cin die Funktion cin.getline() verwenden. Es sind zwei Parameter erforderlich: das char-Array, in das gelesen werden soll, und die Größe des Arrays, um sicherzustellen, dass kein Pufferüberlauf auftritt.
<code class="c++">char str[100]; cin.getline(str, sizeof str);</code>
Lösung 2: getline() für std::string
Wenn Sie C 11 oder höher verwenden, können Sie den Typ std::string nutzen und die Funktion getline() verwenden:
<code class="c++">std::string str; std::getline(cin, str);</code>
Empfehlung für einen modernen Compiler
Es wird dringend empfohlen, von Turbo C 4.5 auf einen moderneren Compiler zu aktualisieren. Visual Studio Express ist eine kostenlose Option für Windows, die verbesserte Sprachunterstützung und Funktionen bietet.
Das obige ist der detaillierte Inhalt vonWarum liest „cin' nur das erste Wort in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!