1.7 Kullanıcı Girdisi (User Input)

C++ dilinde kullanıcıdan giriş (input) almak için standart giriş akışı olan cin nesnesi kullanılır. cin (console input) nesnesi, iostream başlık dosyasında tanımlanmıştır ve klavyeden alınan veriyi programınıza aktarmak için kullanılır. cinnesnesi, >> (çıkarma operatörü) ile birlikte kullanılarak, kullanıcıdan alınan veriyi bir değişkene aktarır.

Temel Kullanım

Kullanıcıdan alınan girişler genellikle int, float, double, char ve string gibi temel veri türleriyle ilişkilidir.

#include <iostream>  // Giriş ve çıkış işlemleri için gerekli başlık dosyası
using namespace std;

int main() {
    int number;
    cout << "Bir sayi girin: ";  // Kullanıcıya bilgi mesajı gösterme
    cin >> number;               // Kullanıcıdan sayı girişini alma
    cout << "Girdiginiz sayi: " << number << endl;  // Girilen sayıyı ekrana yazdırma
    return 0;
}

using namespace std;: std isim alanı (namespace) kullanımını kolaylaştırır, böylece std::cin ve std::coutyerine doğrudan cin ve cout kullanılabilir.

Açıklama:

  1. #include <iostream>: cin ve cout gibi giriş/çıkış işlemlerini içeren iostream başlık dosyasını programa ekler.

  2. cout << "Bir sayi girin: ": Ekrana bilgi mesajı yazar.

  3. cin >> number;: Kullanıcının girdiği değeri number değişkenine atar.

  4. cout << "Girdiginiz sayi: " << number << endl;: Kullanıcının girdiği değeri ekrana yazdırır.

Çeşitli Veri Türleri İçin Kullanıcı Girdisi

Kullanıcıdan birden fazla veri türünde giriş almak da mümkündür. Örneğin, string, double veya char gibi farklı veri türlerini cin ile okuyabilirsiniz.

#include <iostream>
#include <string>  // string veri türünü kullanmak için gerekli başlık dosyası
using namespace std;

int main() {
    string name;
    int age;
    double height;

    cout << "Adinizi girin: ";
    cin >> name;  // string türünde giriş

    cout << "Yasinizi girin: ";
    cin >> age;   // int türünde giriş

    cout << "Boyunuzu girin (metre cinsinden): ";
    cin >> height;  // double türünde giriş

    cout << "\nMerhaba, " << name << "! " 
         << "Yasiniz: " << age 
         << ", Boyunuz: " << height << " metredir." << endl;

    return 0;
}

getline Kullanımı (Satır Bazlı Kullanıcı Girdisi)

cin operatörü, boşluk karakteri ( ) veya satır sonu karakteri () gördüğünde okumayı durdurur. Bu nedenle, kullanıcı tam bir satır girmek isterse getline() fonksiyonu kullanılabilir. getline() fonksiyonu, cin operatörü ile kıyaslandığında, tüm satırı (boşluk dahil) okur ve bir string değişkenine atar.

#include <iostream>
#include <string>  // string veri türü için gerekli başlık dosyası
using namespace std;

int main() {
    string fullName;
    
    cout << "Tam isminizi girin: ";
    getline(cin, fullName);  // Kullanıcıdan tüm satırı alır (boşluklar dahil)
    
    cout << "Girdiginiz isim: " << fullName << endl;
    return 0;
}

Açıklama:

  • getline(cin, fullName); ifadesi, cin nesnesinden tam satırı okuyarak fullName değişkenine atar. Böylece, kullanıcının girdiği isim boşluk içeriyor olsa bile tüm satır okunur ve değişkene atanır.

Birden Fazla Kullanıcı Girdisi Alma

Kullanıcıdan aynı anda birden fazla girdi almak için cin'i ardışık olarak kullanabilirsiniz:

#include <iostream>
using namespace std;

int main() {
    int x, y;
    
    cout << "Iki sayi girin: ";
    cin >> x >> y;  // Kullanıcıdan aynı anda iki girdi alır

    cout << "Girdiginiz sayilar: " << x << " ve " << y << endl;
    return 0;
}

Açıklama:

Bu örnekte cin >> x >> y; ifadesi, kullanıcıdan arka arkaya iki giriş (sayı) alır ve x ve y değişkenlerine atar.

Kullanıcı Girdisi Alırken Dikkat Edilmesi Gereken Noktalar

  1. Geçersiz Girdi: Kullanıcı beklenen veri türünde bir girdi girmezse (int yerine string gibi), cin hata durumuna geçer ve daha fazla veri okumaz. Bu durumu düzeltmek için cin.clear() ve cin.ignore() kullanılabilir.

cin.clear();  // Hata bayrağını temizler
cin.ignore(1000, '\n');  // Girdi akışındaki karakterleri yok sayar
  1. Boşlukları Okuma: cin yalnızca ilk boşluğa kadar olan veriyi okur. Tam bir satırı almak için getline() kullanmak gereklidir.

  2. Kullanıcıdan Gelen Fazla Girdi: Kullanıcı beklenenden fazla giriş yaparsa, cin fazladan gelen verileri okumaz ve bu veriler giriş akışında kalır. Bu durumda, sonraki cin işlemlerinde beklenmedik davranışlar görülebilir. Bu durum cin.ignore() ile çözülebilir.

Last updated