logo

C++ Temel Giriş ve Çıkış (G/Ç)

C++ G/Ç işlemi akış kavramını kullanır. Bayt serisine veya veri akışına akış denir. Performansı hızlandırır.

Baytların ana bellekten yazıcı, görüntü ekranı, ağ bağlantısı vb. bir cihaza aktarılmasına çıkış işlemi denir.

Baytlar yazıcı, görüntü ekranı veya ağ bağlantısı gibi bir cihazdan ana belleğe aktığında bir giriş işlemi meydana gelir.

C++'da, önceden tanımlanmış işlevler ve bildirimler başlık dosyaları aracılığıyla sağlanarak, başlangıçtan itibaren yeni kod yazmaya gerek kalmadan belirli görevleri yapmanıza olanak tanır. C++'da giriş/çıkış işlemlerine yönelik birkaç önemli başlık dosyası, giriş ve çıkış görevlerini etkili bir şekilde yürütmeye yönelik işlevleri içerir. C++ programlama dilinde oluşturulan sınıfların ve yöntemlerin bir koleksiyonu olan C++ Standart Kitaplığı, bu başlık dosyalarını içerir. Giriş/çıkış işlemleri için ana başlık dosyalarını tartışalım:

Başlık dosyası İşlev ve Açıklama
Tanımlamak için kullanılır cout, cin ve cerr sırasıyla standart çıktı akışına, standart giriş akışına ve standart hata akışına karşılık gelen nesneler.
Biçimlendirilmiş G/Ç gerçekleştirmek için yararlı olan hizmetleri bildirmek için kullanılır; örneğin hassasiyeti ve ayarı ayarlayın.
Kullanıcı kontrollü dosya işlemeye yönelik hizmetleri bildirmek için kullanılır.

io akışı: C++'da giriş/çıkış işlemleri için en önemli başlık dosyalarından biridir. Anlamı 'giriş çıkış' aktarım. Çeşitli giriş/çıkış akış biçimleriyle çalışmak için, io akışı başlık dosyası sınıfları içerir istream (giriş akışı) Ve ostream (çıkış akışı) ve türetilmiş sınıfları ifstream, ofstream , Ve dizi akışı . Bu başlık dosyasının en sık kullanılan sınıfları şunlardır: cin (standart giriş) Ve cout (standart çıkış) , kullanıcı girişini okumanıza ve çıktıyı konsolda görüntülemenize olanak tanır. Örneğin:

 #include using namespace std; int main() { int num; cout <> num; cout << 'You entered: ' << num << endl; return 0; } 

Çıktı

 Enter a number: 42 You entered: 42 

iomanip: Bu başlık dosyası şu anlama gelir: 'girdi-çıktı manipülasyonu' . Biçimlendirmek için araçlar sağlar giriş Ve çıktı . değiştirmenizi sağlar hizalama, genişlik, hassasiyet ve giriş ve çıkışın diğer biçimlendirme özellikleri. Setw, setprecision, sabit, sol, sağ ve düzenli olarak kullanılan diğer işlevler aşağıda listelenmiştir. Verileri belirli bir şekilde sunmak özellikle kullanışlıdır.

Örnek:

 #include #include using namespace std; int main() { double pi = 3.14159; cout << fixed << setprecision(2) << 'Value of pi: ' << pi << endl; return 0; } 

Çıktı

Java dizeye kadar uzun
 Value of pi: 3.14 

aktarım: Dosya giriş/çıkış işlemleri için başlık dosyasına denir f akışı . Dosyalardan okumak ve dosyalara yazmak için sınıflardan oluşur ifstream (giriş dosyası akışı) Ve ofstream (çıkış dosyası akışı) . Sistem bu sınıfları salt okunur ve salt yazılır dosyaları açmak için kullanır.

Örnek:

 #include #include using namespace std; int main() { ofstream outputFile('output.txt'); if (outputFile.is_open()) { outputFile << 'Hello, File I/O!'; outputFile.close(); cout << 'File is written successfully.' << endl; } else { cout << 'Failed to open the file.' << endl; } return 0; } 

Çıktı

 The file was written successfully. 

Bu başlık dosyaları C++ giriş/çıkış görevleri için en önemli dosyalar arasındadır. Her birinin belirli bir amacı vardır ve ister sistemle etkileşimde olsun, ister girdi ve çıktıyı içeren görevleri başarılı bir şekilde yönetmek için gerekli araçları sunar. konsol, çıktıyı biçimlendirme veya dosyalarla çalışma.

C++'da sıklıkla kullanırız 'ad alanı std'si kullanılıyor;' başlık dosyalarından sonra. ad alanı std; ifadesi, standart kitaplık bileşenleriyle çalışırken kodu kolaylaştırmak için C++'da sıklıkla kullanılır. Bu ifadenin işlevini ve uygulamasını daha detaylı inceleyelim:

A ad alanı benzer tanımlayıcıları gruplamaya yönelik bir tekniktir (örneğin sınıflar, işlevler , Ve değişkenler ) adlandırma çakışmalarını önlemek için. C++ Standart Kitaplığı, parçalarını (cin, cout vb. gibi) std ad alanı altında sağlar.

Dönem 'standart' kısaltılır 'std' ve standart kitaplığın tüm öğeleri onun içinde bulunur. Bunu yaparak, kodunuzda ayarlanan tanımlayıcılarla olan ad çakışmaları azalır.

Şimdi namespace std'nin neden kullanıldığına değinelim. ifadesi kullanılır:

Ad alanı std'sini kullanmadan:

 #include int main() { std::cout << 'Hello, world!' << std::endl; return 0; } With using namespace std: #include using namespace std; int main() { cout << 'Hello, world!' << endl; return 0; } 

Gördüğünüz gibi, kullanarak ad alanı std; bildirimi atlamanıza izin verir std:: önek standart kitaplık bileşenlerine erişirken. Tekrarlamak zorunda kalmayacağınız için kodunuzu daha kısa ve daha okunabilir hale getirir standart:: her standart kitaplık tanımlayıcısından önce.

G/Ç Kitaplığı Başlık Dosyaları

Standart çıkış akışı (cout):

Cout nesnesi, ostream sınıfının önceden tanımlanmış bir nesnesidir. Genellikle bir görüntü ekranı olan standart çıkış cihazına bağlanır. cout, akış ekleme operatörüyle birlikte kullanılır (<<) to show the output on a console< p>

Standart çıktı akışının (cout) basit örneğini görelim:

 #include using namespace std; int main( ) { char ary[] = &apos;Welcome to C++ tutorial&apos;; cout &lt;&lt; &apos;Value of ary is: &apos; &lt;&lt; ary &lt;&lt; endl; } 

Çıktı

 Value of ary is: Welcome to C++ tutorial 

Standart giriş akışı (cin)

yemek yiyor önceden tanımlanmış bir nesnedir aktarım sınıf. Genellikle klavye olan standart giriş aygıtına bağlanır. Cin, girişi bir konsoldan okumak için akış çıkarma operatörü (>>) ile birlikte kullanılır.

Standart giriş akışının (cin) basit örneğini görelim:

 #include using namespace std; int main( ) { int age; cout &lt;&gt; age; cout &lt;&lt; &apos;Your age is: &apos; &lt;&lt; age &lt;&lt; endl; } 

Çıktı

 Enter your age: 22 Your age is: 22 

Standart bitiş çizgisi (endl)

sonunda önceden tanımlanmış bir nesnedir düşmanımız sınıf. Yeni bir satır karakteri eklemek ve akışı temizlemek için kullanılır.

Standart bitiş çizgisinin (endl) basit örneğini görelim:

 #include using namespace std; int main( ) { cout &lt;&lt; &apos;C++ Tutorial&apos;; cout &lt;&lt; &apos; Javatpoint&apos;&lt;<endl; cout << 'end of line'<<endl; } < pre> <p> <strong>Output</strong> </p> <pre> C++ Tutorial Javatpoint End of line </pre> <h3>Un-buffered standard error stream (cerr):</h3> <p> <strong> <em>cerr</em> </strong> stands for <strong> <em>&apos;standard error&apos;</em> .</strong> </p> <p>It is an unbuffered stream, meaning that output sent to <strong> <em>cerr</em> </strong> is immediately displayed on the console without buffering.</p> <p>It is typically used for displaying error messages and diagnostic information, which need to be displayed immediately to avoid delays caused by buffering.</p> <p> <strong>Example: using cerr:</strong> </p> <pre> #include int main() { std::cerr &lt;&lt; &apos;This is an error message.&apos; &lt;&lt; std::endl; return 0; } </pre> <p> <strong>Output</strong> </p> <pre> This is an error message. </pre> <h3>buffered standard error stream (clog):</h3> <p>clog stands for <strong> <em>&apos;standard log&apos;</em> </strong> . It is a buffered stream, similar to cout. It&apos;s often used for writing informational or diagnostic messages that are less time-sensitive than errors. The use of buffering can improve performance when displaying a large number of messages.</p> <p> <strong>Example: using clog</strong> </p> <pre> #include int main() { std::clog &lt;&lt; &apos;This is an informational message.&apos; &lt;&lt; std::endl; return 0; } </pre> <p> <strong>Output</strong> </p> <pre> This is an informational message. </pre> <p>In both examples, the output will appear on the console. However, the main difference between <strong> <em>cerr</em> </strong> and <strong> <em>clog</em> </strong> lies in their buffering behavior. Due to its unbuffered nature, messages given to <strong> <em>cerr</em> </strong> are displayed right away, but messages sent to clog may be buffered for greater speed. However, they will still eventually appear on the console.</p> <h4>Note: It is important to remember that the type of message you wish to display will determine whether you use cerr or clog. Use cerr for essential messages that need immediate attention (like error messages) and use clog for less critical diagnostic or informational messages that can be buffered for better performance.</h4> <hr></endl;>

Tamponlanmamış standart hata akışı (cerr):

kesin anlamına gelir 'standart hata' .

Bu arabelleksiz bir akıştır, yani çıktının gönderildiği anlamına gelir. kesin ara belleğe alma olmadan hemen konsolda görüntülenir.

Genellikle ara belleğe almanın neden olduğu gecikmeleri önlemek için hemen görüntülenmesi gereken hata mesajlarını ve teşhis bilgilerini görüntülemek için kullanılır.

Örnek: cerr kullanarak:

 #include int main() { std::cerr &lt;&lt; &apos;This is an error message.&apos; &lt;&lt; std::endl; return 0; } 

Çıktı

 This is an error message. 

arabelleğe alınmış standart hata akışı (tıkanma):

tıkanıklık anlamına gelir 'standart günlük' . Cout'a benzer şekilde tamponlanmış bir akıştır. Genellikle hatalardan daha az zamana duyarlı olan bilgilendirici veya tanısal mesajların yazılması için kullanılır. Arabelleğe alma kullanımı, çok sayıda ileti görüntülenirken performansı artırabilir.

Örnek: tıkanıklığı kullanma

 #include int main() { std::clog &lt;&lt; &apos;This is an informational message.&apos; &lt;&lt; std::endl; return 0; } 

Çıktı

 This is an informational message. 

Her iki örnekte de çıktı konsolda görünecektir. Ancak arasındaki temel fark kesin Ve tıkanıklık tamponlama davranışlarında yatmaktadır. Arabelleksiz yapısı nedeniyle, verilen mesajlar kesin hemen görüntülenir, ancak tıkanmaya gönderilen mesajlar daha yüksek hız için ara belleğe alınabilir. Ancak yine de eninde sonunda konsolda görünecekler.

Not: Görüntülemek istediğiniz mesaj türünün cerr mi yoksa clog mu kullandığınızı belirleyeceğini unutmamak önemlidir. Anında ilgilenilmesi gereken önemli iletiler (hata iletileri gibi) için cerr'i kullanın ve daha iyi performans için arabelleğe alınabilecek daha az kritik tanılama veya bilgilendirici iletiler için clog'u kullanın.