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

Î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. În continuare, ar trebui să precizați unde I / O va apărea folosind pointerii 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
Filebuf Setează bufferele de fișiere pentru a citi/scrie. Are funcții close() și open() în el
fstreambase Este clasa de bază pentru clasele ifstream, fstream și ofstream. Operațiunile sale sunt comune fluxurilor de fișiere.
ifstream Este o clasă de flux de fișiere de intrare pentru furnizarea de operațiuni de intrare.
ofstream Este o clasă de flux de fișiere de ieșire pentru furnizarea de operațiuni de ieșire.
fstream Este 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

Explicația codului:

  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ă bun venit pentru a menține șirul Bine ați venit la 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 intrarea de la dispozitivul de intrare, tastatură. Este utilizat în mod normal împreună cu operatorul de extracție (>>). Obiectul de extracție este responsabil pentru extragerea 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

Explicația codului:

  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

Explicația codului:

  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

Explicația codului:

  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

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;
}

Rezumat

  • Sarcinile de intrare și ieșire In C++ se fac prin secvență de octeți. Octeții se numesc fluxuri.
  • Într-un flux de intrare, octeții curg de la dispozitivul de intrare ca o tastatură către memoria principală.
  • Într-un flux de ieșire, octeții din memoria principală apoi către un dispozitiv de ieșire precum un monitor.
  • Obiectul cin este o instanță a clasei istream. Citește intrarea de la un dispozitiv de intrare precum tastatura.
  • Obiectul cout este o instanță a clasei ostream. Produce ieșire pe dispozitive de ieșire precum monitorul.
  • Obiectul cerr este o instanță a clasei ostream. Afișează obiecte de eroare pe monitor.
  • Obiectul clog este o instanță a clasei ostream. Afișează mesaje de eroare pe dispozitivele de ieșire.
  • Obiectul clog tamponează mesajele de eroare, în timp ce obiectul cerr nu.