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.
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