C++ Intrare/ieșire de bază: Exemplu Cout, Cin, Cerr

⚡ Rezumat inteligent

C++ Operațiunile de intrare și ieșire se bazează pe obiecte de flux care mută datele sub formă de secvențe de octeți între programe și dispozitive, cu comenzile cin citind datele de la tastatură, iar comenzile cout, cerr și clog scriind ieșirea pe ecran.

  • 🔘 Fluxuri: Sarcinile de intrare și ieșire se deplasează sub formă de secvențe de octeți numite fluxuri, mutând date între memoria principală și dispozitive.
  • 📥 Fișiere antet: Bibliotecile iostream, iomanip și fstream definesc obiectele și manipulatorii utilizați pentru intrări și ieșiri de bază.
  • 🖨️ cout și cin: Obiectul cout afișează cu operatorul de inserție, în timp ce cin citește valori cu ex.tracoperator de ție.
  • ⚠️ cerr și blocare: Ambele raportează erori, dar cerr rămâne nememorat pentru afișare imediată, în timp ce clog memorează mai întâi mesajele în buffer.
  • 🛠️ Eroare de manipulare: Verificările „good”, „bad”, „fail” și „eof” citesc starea fluxului, astfel încât operațiunile eșuate sunt detectate în siguranță.
  • 🤖 Asistență AI: Asistenții de codare bazați pe inteligență artificială, cum ar fi GitHub Copilot, generează exemple de codare cin și cout dintr-un comentariu scurt sau un nume de funcție.

C++ Intrare de bază Ieșire

În ce sunt fluxurile C++?

C++ oferă utilizatorilor un număr de biblioteci pe care le pot folosi pentru a efectua sarcini de intrare/ieșire. Aceste sarcini sunt realizate sub formă de secvențe de octeți, numite în mod popular fluxuri.

Fluxurile sunt împărțite în două:

Tipuri de fluxuri

  • Flux de intrare: Acesta este un tip de flux în care octeții curg de la un dispozitiv, cum ar fi o tastatură, către memoria principală.
  • Flux de ieșire: Acesta este un tip de flux în care octeții curg în direcția opusă, adică din memoria principală apoi către dispozitiv, cum ar fi ecranul de afișare.

Cum funcționează fluxurile?

C++ fluxurile funcționează după cum urmează:

  1. Mai întâi, un flux este inițializat cu tipul potrivit.
  2. Apoi, ar trebui să specificați unde vor avea loc operațiunile I/O folosind pointeri get/put.
  3. După ce ajungeți la locația potrivită într-un flux, puteți efectua sarcini de intrare și de ieșire folosind operatorii >> și, respectiv, <<.

Tabel de funcții

Următoarele sunt funcțiile furnizate în fișierul antet stream.h:

Clasăfuncţii
FilebufSetează bufferele de fișiere pentru a citi/scrie. Are funcții close() și open() în el
fstreambaseEste clasa de bază pentru clasele ifstream, fstream și ofstream. Operațiunile sale sunt comune fluxurilor de fișiere.
ifstreamEste o clasă de flux de fișiere de intrare pentru furnizarea de operațiuni de intrare.
ofstreamEste o clasă de flux de fișiere de ieșire pentru furnizarea de operațiuni de ieșire.
fstreamEste o clasă de flux de intrare/ieșire. Suportă operațiuni de intrare/ieșire simultane.

C++ Fișiere antet pentru intrare/ieșire

C++ oferă trei biblioteci care vin cu funcții pentru efectuarea sarcinilor de bază de intrare/ieșire. Acestea includ:

  • Iostream: Este un acronim pentru fluxul de intrare/ieșire standard. Acest fișier antet vine cu definiții pentru obiecte precum cin/cout/cerr.
  • Iomanip: Este un acronim pentru manipulatori de intrare/ieșire. Biblioteca vine cu funcții care pot fi utilizate pentru manipularea fluxurilor. Conține definiții pentru obiecte precum setw, setprecision și altele.
  • Fstream: Acesta este un fișier antet pentru descrierea fluxului de fișiere. Se ocupă de datele care sunt citite din fișier ca intrare sau care sunt scrise într-un fișier, rezultatul.

Cuvintele cheie cin și cout sunt foarte populare în C++. Ele sunt utilizate pentru preluarea intrărilor și, respectiv, ieșirile de tipărire. Pentru a le utiliza, trebuie să includeți fișierul antet iostream în programul dvs. Motivul este că sunt definite în acel fișier antet. Neincluderea fișierului antet iostream va genera o eroare. Acest lucru rezultă dintr-un eșec al C++ compilator pentru a înțelege semnificația cuvintelor cheie.

Obiectele majore definite în fișierul antet iostream sunt cin, cout, cerr și clog. Să le discutăm.

std::out

Obiectul cout este o instanță a clasei iostream. Este folosit pentru a produce rezultate pe un dispozitiv de ieșire standard, care este în mod normal ecranul. Este folosit împreună cu operatorul de inserare a fluxului (<<).

Exemplu

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

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

ieșire:

std::out

Iată o captură de ecran a codului:

std::out

Code Explicaţie:

  1. Includeți fișierul antet iostream unde este definit obiectul cout.
  2. Includeți spațiul de nume std, astfel încât să nu fie nevoie să-l apelăm când folosim clasele sale.
  3. Apelați funcția main(). Codul programului ar trebui adăugat în corpul său. Acolada cu deschidere { marchează începutul corpului său.
  4. Creați o variabilă de caracter numită welcome pentru a conține șirul de caractere Welcome to Guru99.
  5. Tipăriți valoarea șirului bun venit pe consolă. Sfârșitul este a C++ cuvânt cheie care înseamnă linia finală. Mută ​​cursorul pentru a începe tipărirea textului pe linia următoare.
  6. Programul trebuie să returneze valoarea după executarea cu succes.
  7. Sfârșitul corpului funcției main().

std::cin

Obiectul cin este o instanță a clasei istream. Citește date de intrare de la dispozitivul de intrare, tastatura. În mod normal, este utilizat împreună cu extracOperatorul de exprimare (>>). Ex.tracobiectul tion este responsabil pentru extracprocesarea datelor introduse prin tastatură din obiectul cin.

Exemplu

Următorul exemplu demonstrează cum să utilizați cuvântul cheie cin in C++:

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

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

	return 0;
}

ieșire:

std::cin

Iată o captură de ecran a codului:

std::cin

Code Explicaţie:

  1. Includeți fișierul antet iostream în programul nostru. Obiectul cin este definit în acest fișier antet.
  2. Includeți spațiul de nume std pentru a-și folosi clasele. Nu va trebui să apelați std atunci când utilizați clasele sale.
  3. Apelați funcția main(). Codul programului ar trebui adăugat în corpul său.
  4. Începutul corpului programului.
  5. Declarați un variabilă întreagă număr numit.
  6. Imprimați un mesaj pe ecran care solicită utilizatorului să introducă un număr.
  7. Citiți de la tastatură valoarea introdusă de utilizator pe consolă.
  8. Tipăriți valoarea citită mai sus pe consolă alături de alt text.
  9. Programul ar trebui să returneze o valoare dacă se execută cu succes.
  10. Sfârșitul corpului funcției principale.

std::cerr

Obiectul cerr formează fluxul de erori standard pentru afișarea erorilor C++. Cerr este o instanță a clasei ostream. Obiectul cerr este fără tampon. Aceasta înseamnă că este utilizat atunci când un mesaj de eroare urmează să fie afișat imediat.

Deoarece este fără tampon, nu stochează mesajul de eroare pentru o afișare ulterioară. Este folosit împreună cu operatorul de inserare a fluxului (<<).

Exemplu

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

	cerr << "An Error occurred!";

	return 0;
}

ieșire:

std::cerr

Iată o captură de ecran a codului:

std::cerr

Code Explicaţie:

  1. Includeți fișierul antet iostream unde a fost definit obiectul cerr.
  2. Includeți spațiul de nume std, astfel încât să nu fie nevoie să-l apelăm când folosim clasele sale.
  3. Apelați funcția main(). Logica programului ar trebui adăugată în corpul său. Acolada deschisă marchează începutul corpului funcției.
  4. Utilizați obiectul cerr pentru a imprima o eroare pe consolă.
  5. Programul trebuie să returneze o valoare la executarea cu succes.
  6. Sfârșitul corpului funcției principale.

std::clog

Obiectul clog este o instanță a clasei ostream. Este folosit pentru a afișa erori pe afișajul standard, monitor. Este similar cu obiectul cerr, dar este tamponat. Deoarece este stocat în buffer, acesta stochează mesajul de eroare în buffer până când acesta este umplut/spălat. Este folosit împreună cu operatorul de inserare a fluxului (<<).

Exemplu

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

ieșire:

std::clog

Iată o captură de ecran a codului:

std::clog

Code Explicaţie:

  1. Inclusiv fișierul antet iostream în care este definit obiectul clog.
  2. Includerea spațiului de nume std, astfel încât să putem folosi clasele sale fără a-l apela.
  3. Apelarea funcției main(). Logica programului ar trebui adăugată în corpul său. { marchează începutul corpului funcției.
  4. Utilizați obiectul înfundat pentru a imprima o eroare pe ieșirea standard, monitorul.
  5. Programul trebuie să returneze o valoare la finalizarea cu succes.
  6. Sfârșitul corpului funcției main().

Gestionarea erorilor cu fluxurile IO

Aceleași obiecte de flux raportează și dacă o operațiune a reușit, lucru dezvăluit de verificările stării fluxului.

Pentru a verifica dacă un flux este valid sau nu, îl puteți folosi ca boolean.

Iată un exemplu:

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

Pentru a obține mai multe detalii despre starea fluxului, puteți utiliza aceste funcții:

  • good()- va reveni adevărat dacă totul este în regulă.
  • bad()- va returna true dacă apare o eroare fatală.
  • fail()- va returna true după operarea nereușită a fluxului.
  • eof()- va returna true dacă ajunge la sfârșitul unui fișier.

Pentru a ști dacă o anumită operație de citire/scriere a eșuat, testați rezultatul citirii.

De exemplu, pentru a verifica dacă utilizatorul a introdus un număr întreg valid, procedați astfel:

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

Întrebări frecvente

Obiectul cout este sigur din punct de vedere al tipului și folosește operatorul de inserție, deci detectează automat tipul fiecărei valori. printf din C se bazează pe specificatori de format precum %d, care trebuie să corespundă manual argumentelor.

FostultracOperatorul tion se oprește la primul spațiu, deci cin citește un singur cuvânt. Pentru a captura o linie întreagă cu spații, apelați getline(cin, variabilă), care citește până la caracterul newline.

Ambele încep o linie nouă, dar endl golește și buffer-ul de ieșire de fiecare dată, ceea ce poate încetini buclele aglomerate. Se preferă o linie nouă simplă și se rezervă endl pentru momentul în care buffer-ul trebuie golit imediat.

Obiectele cin, cout, cerr și clog se află în spațiul de nume std. Scrierea folosind spațiul de nume std vă permite să tastați cout în loc de std::cout. Proiectele mari păstrează adesea prefixul explicit std pentru a evita conflictele.

Includeți antetul iomanip și utilizați manipulatoare cu cout. Manipulatorul setw rezervă o lățime a câmpului, iar setprecision setează câte cifre apar, formatând numerele și coloanele fără a modifica valorile stocate.

Da. Deoarece cout și cerr sunt fluxuri separate, un shell poate redirecționa ieșirea normală către un fișier în timp ce erorile ajung în continuare pe ecran. În cod, rdbuf poate indica un flux către un alt buffer.

Da. Asistenții de codare bazați pe inteligență artificială citesc un comentariu sau un nume de funcție și produc instrucțiuni cin și cout, plus include-ul iostream și un prompt formatat. RevVizualizarea logicii fluxului generat pentru cazurile limită rămâne înțeleaptă.

Da. Copilotul GitHub completează formatarea cout, buclele de validare cin și verificările de erori cerr pe măsură ce tastați. Este anul 2026 C++ Inteligența de cod adaugă conștientizare semantică a simbolurilor, astfel încât sugestiile pentru mai multe fișiere rămân consecvente.

Rezumați această postare cu: