C++ Temel Giriş/Çıkış: Cout, Cin, Cerr Örneği

⚡ Akıllı Özet

C++ Giriş ve çıkış işlemleri, programlar ve cihazlar arasında bayt dizileri olarak veri taşıyan akış nesnelerine dayanır; cin klavye girişini okurken, cout, cerr ve clog ekrana çıktı yazar.

  • 🔘 Canlı Yayınlar: Giriş ve çıkış görevleri, veri akışını sağlayan, akış adı verilen bayt dizileri halinde ilerler. Bu işlemler, ana bellek ile aygıtlar arasında veri taşır.
  • 📥 Başlık dosyaları: iostream, iomanip ve fstream kütüphaneleri, temel giriş ve çıkış için kullanılan nesneleri ve manipülatörleri tanımlar.
  • 🖨️ cout ve cin: `cout` nesnesi `insert` operatörüyle çıktı verirken, `cin` nesnesi `ex` operatörüyle değerleri okur.tracoperatör.
  • ⚠️ cerr ve clog: Her ikisi de hata bildiriyor, ancak cerr anında görüntülenmek üzere arabelleğe alınmamış halde kalırken, clog önce mesajları arabelleğe alıyor.
  • Hata yönetimi: İyi, kötü, başarısız ve dosya sonu kontrolleri, okuma akışı durumunu kontrol eder, böylece başarısız işlemler güvenli bir şekilde yakalanır.
  • 🤖 Yapay zeka yardımı: GitHub Copilot gibi yapay zeka kodlama asistanları, kısa bir yorumdan veya fonksiyon adından cin ve cout için hazır kodlar oluşturur.

C++ Temel Giriş Çıkışı

Akışlar neler içerir? C++?

C++ kullanıcılara giriş/çıkış görevlerini gerçekleştirmek için kullanabilecekleri bir dizi kitaplık sağlar. Bu görevler, popüler olarak akışlar olarak adlandırılan bayt dizileri biçiminde gerçekleştirilir.

Akımlar ikiye ayrılır:

Akış türleri

  • Giriş Akışı: Bu, baytların klavye gibi bir cihazdan ana belleğe aktığı bir akış türüdür.
  • Çıkış Akışı: Bu, baytların ters yönde, yani ana bellekten görüntü ekranı gibi cihaza aktığı bir akış türüdür.

Akışlar nasıl çalışır?

C++ akışlar şu şekilde çalışır:

  1. İlk olarak, doğru türde bir akış başlatılır.
  2. Ardından, G/Ç işlemlerinin nerede gerçekleşeceğini get/put işaretçileri kullanarak belirtmelisiniz.
  3. Bir akışta doğru konuma ulaştıktan sonra sırasıyla >> ve << operatörlerini kullanarak giriş ve çıkış görevlerini gerçekleştirebilirsiniz.

İşlev Tablosu

stream.h başlık dosyasında sağlanan işlevler şunlardır:

Sınıffonksiyonlar
FilebufDosya tamponlarını okuma/yazma için ayarlar. İçinde close() ve open() fonksiyonları vardır
fstreambaseifstream, fstream ve ofstream sınıfları için temel sınıftır. İşlemleri dosya akışlarında ortaktır.
ifstreamGiriş işlemlerini sağlamak için bir giriş dosyası akış sınıfıdır.
akışÇıktı işlemlerini sağlamaya yönelik bir çıktı dosyası akış sınıfıdır.
f akışıGiriş/Çıkış akışı sınıfıdır. Eş zamanlı giriş/çıkış işlemlerini destekler.

C++ Giriş/Çıkış için başlık dosyaları

C++ temel giriş/çıkış görevlerini gerçekleştirmek için işlevlerle birlikte gelen üç kitaplık sağlar. Bunlar şunları içerir:

  • Io akışı: Standart giriş/çıkış akışının kısaltmasıdır. Bu başlık dosyası, cin/cout/cerr gibi nesnelerin tanımlarıyla birlikte gelir.
  • Ne demek istiyorsun? Giriş/çıkış manipülatörlerinin kısaltmasıdır. Kitaplık, akışların işlenmesi için kullanılabilecek işlevlerle birlikte gelir. Setw, setprecision ve diğerleri gibi nesnelerin tanımlarını içerir.
  • F akışı: Bu, dosya akışını açıklamaya yönelik bir başlık dosyasıdır. Dosyadan okunan verileri girdi olarak veya dosyaya yazılan verileri çıktı olarak işler.

Cin ve cout anahtar kelimeleri şu ülkelerde çok popülerdir: C++. Sırasıyla giriş almak ve çıktıları yazdırmak için kullanılırlar. Bunları kullanmak için programınıza iostream başlık dosyasını eklemelisiniz. Sebebi ise o başlık dosyasında tanımlanmış olmalarıdır. iostream başlık dosyasının eklenmemesi bir hata oluşturacaktır. Bu, kurumun başarısızlığından kaynaklanmaktadır. C++ anahtar kelimelerin anlamını anlamak için derleyici.

iostream başlık dosyasında tanımlanan başlıca nesneler cin, cout, cerr ve clog'dur. Bunları tartışalım.

standart::cout

cout nesnesi iostream sınıfının bir örneğidir. Normalde ekran olan standart bir çıktı cihazında çıktı üretmek için kullanılır. Akış ekleme operatörü (<<) ile birlikte kullanılır.

Örnek E-posta

#include <iostream>
using namespace std;
int main() {

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

Çıktı:

standart::cout

İşte kodun ekran görüntüsü:

standart::cout

Code Açıklama:

  1. Cout nesnesinin tanımlandığı yere iostream başlık dosyasını ekleyin.
  2. Sınıflarını kullanırken onu çağırmak zorunda kalmamamız için std ad alanını ekleyin.
  3. main() fonksiyonunu çağırın. Program kodu kendi gövdesine eklenmelidir. Açılan küme ayracı {, gövdesinin başlangıcını işaret eder.
  4. "Welcome to" dizesini tutmak için "welcome" adında bir karakter değişkeni oluşturun. Guru99
  5. Hoş geldin dizesinin değerini konsola yazdırın. Sonu bir C++ bitiş çizgisi anlamına gelen anahtar kelime. Bir sonraki satıra metin yazdırmaya başlamak için imleci hareket ettirir.
  6. Program başarılı bir şekilde yürütüldüğünde değeri döndürmelidir.
  7. main() fonksiyonunun gövdesinin sonu.

std::cin

`cin` nesnesi, `istream` sınıfının bir örneğidir. Giriş aygıtından, yani klavyeden girdi okur. Genellikle `ex` ile birlikte kullanılır.trac(>>) operatörü.traction nesnesi ex'ten sorumludur.tracCin nesnesinden klavye aracılığıyla girilen veriler.

Örnek E-posta

Aşağıdaki örnek, cin anahtar sözcüğünün nasıl kullanılacağını göstermektedir C++:

#include <iostream>
using namespace std;
int main()
{
	int number;

	cout << "Enter a number:";
	cin >> number;
	cout << "\nYou entered: " << number;

	return 0;
}

Çıktı:

std::cin

İşte kodun ekran görüntüsü:

std::cin

Code Açıklama:

  1. iostream başlık dosyasını programımıza ekleyin. Cin nesnesi bu başlık dosyasında tanımlanır.
  2. Sınıflarını kullanmak için std ad alanını ekleyin. Sınıflarını kullanırken std'yi çağırmanıza gerek kalmayacak.
  3. main() fonksiyonunu çağırın. Program kodu kendi gövdesine eklenmelidir.
  4. Programın gövdesinin başlangıcı.
  5. Beyan et tamsayı değişkeni numarayı adlandırdı.
  6. Kullanıcının bir sayı girmesini isteyen ekrana bir mesaj yazdırın.
  7. Kullanıcının konsola girdiği değeri klavyeden okuyun.
  8. Yukarıda okunan değeri diğer metinle birlikte konsola yazdırın.
  9. Program başarılı bir şekilde yürütülürse bir değer döndürmelidir.
  10. Ana işlevin gövdesinin sonu.

std::cerr

Cerr nesnesi, hataların çıktısını almak için standart hata akışını oluşturur. C++. Cerr, ostream sınıfının bir örneğidir. cerr nesnesi arabelleğe alınmamıştır. Bu, bir hata mesajının hemen görüntülenmesi gerektiğinde kullanıldığı anlamına gelir.

Arabelleklenmemiş olduğundan, daha sonraki bir görüntüleme için hata mesajını depolamaz. Akış ekleme operatörü (<<) ile birlikte kullanılır.

Örnek E-posta

#include <iostream>
using namespace std;
int main() {

	cerr << "An Error occurred!";

	return 0;
}

Çıktı:

std::cerr

İşte kodun ekran görüntüsü:

std::cerr

Code Açıklama:

  1. Cerr nesnesinin tanımlandığı yere iostream başlık dosyasını ekleyin.
  2. Sınıflarını kullanırken onu çağırmak zorunda kalmamamız için std ad alanını ekleyin.
  3. main() fonksiyonunu çağırın. Program mantığı kendi bünyesinde eklenmelidir. Açılan küme ayracı, işlevin gövdesinin başlangıcını işaret eder.
  4. Konsola bir hata yazdırmak için cerr nesnesini kullanın.
  5. Program başarılı bir şekilde yürütüldüğünde bir değer döndürmelidir.
  6. Ana işlevin gövdesinin sonu.

std::tıkanıklık

clog nesnesi ostream sınıfının bir örneğidir. Standart ekran olan monitörde hataları göstermek için kullanılır. cerr nesnesine benzer, ancak arabelleğe alınmıştır. Arabelleğe alınmış olduğundan, arabellek doldurulana/temizlenene kadar hata mesajını arabellekte depolar. Akış ekleme operatörü (<<) ile birlikte kullanılır.

Örnek E-posta

#include <iostream>
using namespace std;
int main() {
	clog << "An Error occurred!";
	return 0;
}

Çıktı:

std::tıkanıklık

İşte kodun ekran görüntüsü:

std::tıkanıklık

Code Açıklama:

  1. Takunya nesnesinin tanımlandığı iostream başlık dosyasını içerir.
  2. Sınıflarını çağırmadan kullanabilmemiz için std ad alanını dahil ediyoruz.
  3. main() fonksiyonunun çağrılması. Program mantığı kendi bünyesinde eklenmelidir. { işlevin gövdesinin başlangıcını işaret eder.
  4. Standart çıktı olan monitöre bir hata yazdırmak için clog nesnesini kullanın.
  5. Program başarılı bir şekilde tamamlandığında bir değer döndürmelidir.
  6. main() fonksiyonunun gövdesinin sonu.

GÇ akışlarında hata işleme

Aynı akış nesneleri, bir işlemin başarılı olup olmadığını da bildirir; bu bilgi akış durumu kontrolleri tarafından ortaya çıkarılır.

Bir akışın geçerli olup olmadığını kontrol etmek için onu Boolean olarak kullanabilirsiniz.

İşte bir örnek:

ifstream file( "myfile.txt" );
if ( ! file )
{
        cout << "File NOT opened!" << endl;
}

Akış durumu hakkında daha fazla ayrıntı almak için şu işlevleri kullanabilirsiniz:

  • good()- her şey yolundaysa true değerini döndürür.
  • bad()- önemli bir hata meydana gelirse true değerini döndürür.
  • fail()- başarısız akış işleminden sonra true değerini döndürür.
  • eof()- bir dosyanın sonuna ulaşırsa true değerini döndürür.

Belirli bir okuma/yazma işleminin başarısız olup olmadığını öğrenmek için okuma sonucunu test edin.

Örneğin, kullanıcının geçerli bir tamsayı girip girmediğini kontrol etmek için şunu yapın:

int p;
if ( cin >> p ) 
{
        cout << "Enter valid number" << endl;
}

SSS

`cout` nesnesi tür güvenlidir ve ekleme operatörünü kullanır, bu nedenle her değerin türünü otomatik olarak algılar. C'nin `printf` fonksiyonu ise %d gibi format belirleyicilerine dayanır ve bu belirleyicilerin argümanlarla manuel olarak eşleştirilmesi gerekir.

Eskitrac`tion` operatörü ilk boşlukta durur, bu nedenle `cin` yalnızca bir kelime okur. Boşluk içeren bir satırın tamamını yakalamak için, yeni satır karakterine kadar okuyan `getline(cin, değişken)` işlevini çağırın.

İkisi de yeni bir satır başlatır, ancak `endl` her seferinde çıktı arabelleğini boşaltır, bu da yoğun döngüleri yavaşlatabilir. Düz bir yeni satır tercih edin ve `endl`'yi arabelleğin hemen boşaltılması gerektiğinde kullanın.

`cin`, `cout`, `cerr` ve `clog` nesneleri `std` ad alanında bulunur. `using namespace std` yazmak, `std::cout` yerine `cout` yazmanıza olanak tanır. Büyük projelerde çakışmaları önlemek için genellikle açıkça `std` öneki kullanılır.

iomanip başlığını ekleyin ve cout ile manipülatörleri kullanın. setw manipülatörü bir alan genişliğini ayırır ve setprecision, saklanan değerleri değiştirmeden sayıları ve sütunları biçimlendirerek kaç basamağın görüneceğini ayarlar.

Evet. Çünkü `cout` ve `cerr` ayrı akışlardır, bu nedenle bir kabuk normal çıktıyı bir dosyaya yönlendirebilirken hatalar yine de ekrana ulaşır. Kodda, `rdbuf` bir akışı başka bir arabelleğe yönlendirebilir.

Evet. Yapay zekâ kodlama asistanları bir yorumu veya fonksiyon adını okuyarak cin ve cout ifadeleri, ayrıca iostream include komutu ve biçimlendirilmiş bir komut istemi üretir. RevUç durumlar için oluşturulan akış mantığını incelemek akıllıca olur.

Evet. GitHub Yardımcı Pilotu Siz yazarken `cout` biçimlendirmesini, `cin` doğrulama döngülerini ve `cerr` hata kontrollerini tamamlar. Yıl 2026. C++ Kod zekası, anlamsal sembol farkındalığı ekleyerek çoklu dosya önerilerinin tutarlı kalmasını sağlar.

Bu yazıyı şu şekilde özetleyin: