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;:stdisim alanı (namespace) kullanımını kolaylaştırır, böylecestd::cinvestd::coutyerine doğrudancinvecoutkullanılabilir.
Açıklama:
#include <iostream>:cinvecoutgibi giriş/çıkış işlemlerini içereniostreambaşlık dosyasını programa ekler.cout << "Bir sayi girin: ": Ekrana bilgi mesajı yazar.cin >> number;: Kullanıcının girdiği değerinumberdeğişkenine atar.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)
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,cinnesnesinden tam satırı okuyarakfullNamedeğ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
Geçersiz Girdi: Kullanıcı beklenen veri türünde bir girdi girmezse (
intyerinestringgibi),cinhata durumuna geçer ve daha fazla veri okumaz. Bu durumu düzeltmek içincin.clear()vecin.ignore()kullanılabilir.
cin.clear(); // Hata bayrağını temizler
cin.ignore(1000, '\n'); // Girdi akışındaki karakterleri yok sayarBoşlukları Okuma:
cinyalnızca ilk boşluğa kadar olan veriyi okur. Tam bir satırı almak içingetline()kullanmak gereklidir.Kullanıcıdan Gelen Fazla Girdi: Kullanıcı beklenenden fazla giriş yaparsa,
cinfazladan gelen verileri okumaz ve bu veriler giriş akışında kalır. Bu durumda, sonrakicinişlemlerinde beklenmedik davranışlar görülebilir. Bu durumcin.ignore()ile çözülebilir.
Last updated
Was this helpful?