Überlauf bei Strineingaben
-
Hallo, diesemal hab ich erstmal nur eine theoretische Frage.
Im groben geht es um ein kleines Programm welches einen String vom Benutzer einliest und die Anzahl der Strings ausgibt und wiederholt bis ein leerer string eingegeben wurde. Nichts großes. Nun meine Frage:
Wie kann ich bei der Zeichenketteneingabe ein Überlauf des
für den String bereitgestellten Arrays verhindern?Was gibt es da für Möglichkeiten?
-
Keydo schrieb:
Wie kann ich bei der Zeichenketteneingabe ein Überlauf des
für den String bereitgestellten Arrays verhindern?Indem Du die im Standard enthaltene String-Klasse std::string verwendest.
-
Kann mit getline überhaupt -unbeabsichtigt- ein Überlauf erzeugt werden?
getline(cin, string)
-
wenn es unbedingt C-Strings sein müssen, dann bleibt dir nix, als das Array so lang zu machen, dass der Nutzer es *wahrscheinlich* nicht vollschreibt.
da sind std::strings doch besser...
-
Keydo schrieb:
Kann mit getline überhaupt -unbeabsichtigt- ein Überlauf erzeugt werden?
getline(cin, string)Nicht, wenn Du die String-Variante verwendest. Falls Du die Variante 'cin.getline(cstring, size)' verwendest, kann natürlich ein Überlauf erzeugt werden, wenn die angegebene Größe die des reservierten Puffers übersteigt.