0Pricing
C++ Academy · Ders

getline ile Girdiyi Güvenle Okuma

Satır girdisi için std::getline kullanın ve kullanıcı girdisini kullanmadan önce doğrulayın

getline ile Girdiyi Güvenle Okuma, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Güvenli Girdi Neden Önemlidir?

Kullanıcı girdisi, çökmelerin en yaygın kaynağıdır. Yanlış bir tür, boş bir satır veya beklenmeyen karakterler naif bir programın tümünü bozabilir. Savunmacı okuma zorunludur.

std::getline Temelleri

std::getline(stream, line), sonraki satır sonuna kadar karakterleri okur. Satır sonu tüketilir ancak saklanmaz.

std::string line;
std::getline(std::cin, line);

Özel Ayraçlar

Yalnızca satır sonunda değil, herhangi bir karakterde durmak için üçüncü bir bağımsız değişken geçirin.

std::string field;
std::getline(std::cin, field, ',');

Sayısal Girdiyi Doğrulama

Önce satırın tamamını okuyun, ardından ayrıştırın. Bu, girdi hatalı olduğunda cin'in hata durumuna geçmesini önler.

std::string line;
int n;
if (std::getline(std::cin, line)) {
    try {
        n = std::stoi(line);
    } catch (...) {
        std::cout << "Invalid number\n";
    }
}

Geçerli Olana Kadar Döngü Çalıştırma

Kullanıcı geçerli girdi sağlayana kadar istem göstermeyi sürdürmek için getline ile try/catch'i birleştirin.

int age;
while (true) {
    std::cout << "Age: ";
    std::string line;
    std::getline(std::cin, line);
    try {
        age = std::stoi(line);
        if (age >= 0 && age < 150) break;
    } catch (...) {}
    std::cout << "Try again.\n";
}

getline İçinde EOF'yi Algılama

getline, EOF durumunda akışı hata durumuna geçirir. Çağrıdan sonra akışı denetleyin.

std::string line;
while (std::getline(std::cin, line)) {
    process(line);
}

Boşluk Karakterlerini Kırpma

Kullanıcılar sık sık başta veya sonda gereksiz boşluklar bırakır. Okumadan sonra her iki ucu da kırpın.

void trim(std::string& s) {
    size_t start = s.find_first_not_of(" \t\r\n");
    size_t end   = s.find_last_not_of(" \t\r\n");
    s = (start == std::string::npos) ? "" : s.substr(start, end - start + 1);
}

Akışı Temizleme

>> ile getline'ı birlikte kullanıyorsanız önce kalan karakterleri temizleyin.

std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Satır Başına Birden Çok Değer Okuma

Satırın tamamını okuyun, ardından bunu bir stringstream'e aktarın ve değerleri çıkarın.

std::string line;
std::getline(std::cin, line);
std::istringstream iss(line);
int a, b, c;
iss >> a >> b >> c;

En Büyük Uzunluk Savunması

İstenmeyen kaynak tüketimini önlemek için aşırı uzun girdileri erkenden reddedin.

std::string line;
if (std::getline(std::cin, line) && line.size() > 1024) {
    std::cout << "Input too long.\n";
    return 1;
}

Parola veya Gizli Girdi Okuma

Standart kitaplık, ekranda gösterilen girdiyi gizlemez. Parola istemleri için Unix'te termios, Windows'ta SetConsoleMode gibi platform API'lerini kullanın.

Hızlı Kontrol

std::cin >> n yerine getline ile okuyup ardından ayrıştırmak neden daha güvenlidir?

Özet

Kullanıcı girdisini std::getline ile okuyun, doğrulama veya ayrıştırmayı ayrı yapın ve boşluk karakterlerini kırpın. Ayrıştırmayı try/catch içine alın ve geçerli bir değer elde edene kadar döngüyü sürdürün. Çıkarma ile satır okumayı birlikte kullanırken akışı temizleyin.

Sıkça Sorulan Sorular

“getline ile Girdiyi Güvenle Okuma” dersi ücretsiz mi?

Evet — “getline ile Girdiyi Güvenle Okuma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“getline ile Girdiyi Güvenle Okuma” dersinde ne öğreneceğim?

Satır girdisi için std::getline kullanın ve kullanıcı girdisini kullanmadan önce doğrulayın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“getline ile Girdiyi Güvenle Okuma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. std::cin ve std::cout'u Doğru Kullanma
  2. Çıktıyı iomanip ile Biçimlendirme
  3. getline ile Girdiyi Güvenle Okuma
  4. std::cerr ve std::clog ile Çalışma
← C++ Academy Sayfasına Dön