Comment puis-je lire une seule ligne à partir de stdin?
Je demande, pour l'équivalent de fgets()
dans C.
let line = ...;
println!("You entered: {}", line);
J'ai lu Comment lire la saisie de l'utilisateur dans la Rouille?, mais il se demande comment lire plusieurs lignes; je veux seulement une ligne.
J'ai aussi lu Comment puis-je lire une Chaîne unique à partir de l'entrée standard?, mais je ne suis pas sûr si elle se comporte comme fgets()
ou sscanf("%s",...)
.
Vous devez vous connecter pour publier un commentaire.
Dans Comment lire la saisie de l'utilisateur dans la Rouille? vous pouvez voir comment itérer sur toutes les lignes:
Vous pouvez également manuellement itérer sans une boucle for:
Vous ne pouvez pas écrire un one-liner pour faire ce que vous voulez. Mais la suite se lit d'une seule ligne (et c'est exactement la même réponse que dans Comment puis-je lire une Chaîne unique à partir de l'entrée standard?):
Vous pouvez également utiliser le
text_io
caisse pour les super simple entrée:Si vous voulez vraiment l'équivalent de
fgets
, puis @Le syndrome de Gerstmann est à droite, vous devez utiliserStdin::read_line
. Cette méthode accepte un tampon que vous avez plus de contrôle pour mettre la chaîne en:Contrairement au C, vous ne pouvez pas accidentellement de dépassement de la mémoire tampon; elle sera automatiquement redimensionnée si la chaîne d'entrée est trop grande.
La réponse de @oli_obk - ker est le idiomatiques solution vous verrez la plupart du temps. En cela, la chaîne est gérée pour vous, et l'interface est beaucoup plus propre.