Girdi okuma
- Rust kursu
- Başlangıç
- Ders 26/115
- 6 dk
std::io::stdin ile kullanıcıdan sayı girişi okursun.
Girdi okuma
Kullanıcıdan satır okumak için std::io::stdin().read_line kullanılır. Okunan metin, sonundaki satır sonu dahil, verilen String'e eklenir:
use std::io;
let mut girdi = String::new();
io::stdin()
.read_line(&mut girdi)
.expect("okunamadı");
let girdi = girdi.trim(); // "\n" atılırread_line bir Result döndürür; expect hata olursa mesajla programı durdurur.
Girdiyi parçalamak
12 * 3 girdisi split_whitespace ile üç parçaya ayrılır. Test edilebilir olsun diye ayrıştırmayı ayrı bir fonksiyona koyarız:
fn parcala(satir: &str) -> Vec<&str> {
satir.split_whitespace().collect()
}
let p = parcala("12 * 3");
println!("{:?}", p); // ["12", "*", "3"]Bu fonksiyon gerçek stdin yerine bir string ile denenebilir.
Uygulama Ayrıştır
fn parcala(line: &str) -> Vec<&str> fonksiyonunu split_whitespace ve collect ile yaz. parcala(" 12 * 3 ") sonucunu {:?} ile yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn parcala(line: &str) -> Vec<&str> {
line.split_whitespace().collect()
}
fn main() {
println!("{:?}", parcala(" 12 * 3 "));
}Beklenen çıktı
["12", "*", "3"]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>read_line</code> neden <code>&mut girdi</code> alır?
- Okunan metni var olan String'e yazabilmek için Doğru cevap
- Girdiyi silmek için
- Daha hızlı olduğu için
- Zorunlu değildir
Açıklama: Değiştirilebilir referans fonksiyonun String'e ekleme yapmasına izin verir; böylece aynı tampon döngüde yeniden kullanılabilir.
2 Satır sonunu at
let girdi = girdi.____();
let girdi = girdi.trim();
Açıklama: trim read_line'ın eklediği satır sonunu ve boşlukları atar.
3 Parça ve görev
| Kavram | Anlamı |
|---|---|
io::stdin() |
Standart girdi |
read_line |
Satırı okur |
expect |
Hatada durur |
split_whitespace |
Parçalara ayırır |