CodeBlanks Logo Icon CodeBlanks

Girdi okuma

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ır

read_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

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
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>&amp;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

Soru
let girdi = girdi.____();
Cevap
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

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma