Wie kann ich das Lesen einer einzelnen Zeile von stdin?
Bitte ich um das äquivalent von fgets()
in C.
let line = ...;
println!("You entered: {}", line);
Habe ich gelesen Wie zu Lesen von Benutzereingaben in Rust?, aber es fragt, wie es zu Lesen mehrerer Zeilen; ich möchte nur eine Zeile.
Lese ich auch Wie lese ich einen einzelnen String von der Standardeingabe?, aber ich bin mir nicht sicher, ob es verhält sich wie fgets()
oder sscanf("%s",...)
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Wie zu Lesen von Benutzereingaben in Rust? können Sie sehen, wie zu iterieren über alle Zeilen:
Können Sie auch manuell Durchlaufen werden, ohne eine for-Schleife:
Können Sie nicht schreiben Sie einen one-liner zu tun, was Sie wollen. Aber das folgende liest eine einzelne Zeile (und genau die gleiche Antwort wie in Wie lese ich einen einzelnen String von der Standardeingabe?):
Können Sie auch die
text_io
Kiste für das super einfache Eingabe:Wenn Sie wirklich wollen, das äquivalent zu
fgets
, dann @Gerstmann ist die richtige, sollten SieStdin::read_line
. Diese Methode akzeptiert einen Puffer, Sie haben mehr Kontrolle zu setzen die Zeichenfolge in:Anders als in C können Sie nicht versehentlich die den Pufferüberlauf; es wird automatisch in der Größe verändert, wenn der input-string ist zu groß.
Den Antwort von @oli_obk - ker ist die idiomatische Lösung Sie werden sehen, die meisten der Zeit. In ihm, der string ist für Sie verwaltet, und die Schnittstelle ist viel sauberer.