C++ Osnovni ulaz/izlaz: primjer Cout, Cin, Cerr

U čemu su Streamovi C++?

C++ pruža korisnicima brojne knjižnice koje mogu koristiti za obavljanje ulazno/izlaznih zadataka. Ovi se zadaci obavljaju u obliku sekvenci bajtova, popularno nazvanih tokovi.

Tokovi su podijeljeni u dva:

Vrste potoka

  • Ulazni tok: Ovo je vrsta toka gdje bajtovi teku od uređaja kao što je tipkovnica do glavne memorije.
  • Izlazni tok: Ovo je vrsta toka gdje bajtovi teku u suprotnom smjeru, to jest od glavne memorije do uređaja kao što je zaslon.

Kako streamovi rade?

C++ tokovi rade na sljedeći način:

  1. Prvo se tok inicijalizira s pravom vrstom.
  2. Zatim biste trebali navesti gdje I / O dogodit će se pomoću pokazivača get/put.
  3. Nakon što dođete do odgovarajućeg mjesta u toku, možete izvršiti ulazne i izlazne zadatke koristeći >> odnosno << operatore.

Tablica funkcija

Sljedeće su funkcije navedene u datoteci zaglavlja stream.h:

Klasa Funkcije
Filebuf Postavlja međuspremnike datoteka za čitanje/pisanje. Sadrži funkcije close() i open().
fstreambase To je osnovna klasa za klase ifstream, fstream i ofstream. Njegove operacije su zajedničke tokovima datoteka.
ifstream To je klasa toka ulazne datoteke za pružanje ulaznih operacija.
ofstream To je klasa toka izlazne datoteke za pružanje izlaznih operacija.
fstream To je ulazno/izlazna klasa toka. Podržava simultane ulazno/izlazne operacije.

C++ Datoteke zaglavlja za ulaz/izlaz

C++ nudi tri biblioteke koje dolaze s funkcijama za obavljanje osnovnih ulazno/izlaznih zadataka. Oni uključuju:

  • Iostream: To je akronim za standardni ulazno/izlazni tok. Ova datoteka zaglavlja dolazi s definicijama za objekte kao što su cin/cout/cerr.
  • Iomanip: To je akronim za ulazno/izlazne manipulatore. Knjižnica dolazi s funkcijama koje se mogu koristiti za manipulaciju tokovima. Sadrži definicije za objekte kao što su setw, setprecision i drugi.
  • Fstream: Ovo je datoteka zaglavlja za opisivanje toka datoteke. Obrađuje podatke koji se čitaju iz datoteke kao ulaz ili koji se zapisuju u datoteku, izlaz.

Ključne riječi cin i cout vrlo su popularne u C++. Koriste se za unos ulaza, odnosno za ispis izlaza. Da biste ih koristili, morate uključiti iostream datoteku zaglavlja u svoj program. Razlog je što su definirani u toj datoteci zaglavlja. Ako ne uključite datoteku zaglavlja iostreama, generirat će se pogreška. To je rezultat neuspjeha od strane C++ kompajler za razumijevanje značenja ključnih riječi.

Glavni objekti definirani u iostream datoteci zaglavlja su cin, cout, cerr i clog. Raspravljajmo o njima.

std::cout

Objekt cout je instanca klase iostream. Koristi se za proizvodnju izlaza na standardnom izlaznom uređaju, što je obično ekran. Koristi se zajedno s operatorom umetanja toka (<<).

Primjer

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

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

Izlaz:

std::cout

Evo snimke zaslona koda:

std::cout

Objašnjenje koda:

  1. Uključite datoteku zaglavlja iostream gdje je definiran objekt cout.
  2. Uključite prostor imena std tako da ga ne moramo pozivati ​​kada koristimo njegove klase.
  3. Pozovite funkciju main(). Programski kod treba dodati unutar njegovog tijela. Otvaranje vitičaste zagrade { označava početak njegovog tijela.
  4. Napravite znakovnu varijablu pod nazivom dobrodošli za držanje niza Welcome to Guru99.
  5. Ispišite vrijednost niza dobrodošlice na konzoli. Kraj je a C++ ključna riječ koja znači završni redak. Pomiče pokazivač kako bi počeo ispisivati ​​tekst u sljedećem retku.
  6. Program mora vratiti vrijednost nakon uspješnog izvođenja.
  7. Kraj tijela funkcije main().

std::cin

Objekt cin je instanca klase istream. Čita unos s ulaznog uređaja, tipkovnice. Obično se koristi zajedno s operatorom ekstrakcije (>>). Ekstrakcijski objekt odgovoran je za izdvajanje podataka unesenih putem tipkovnice iz cin objekta.

Primjer

Sljedeći primjer pokazuje kako koristiti ključnu riječ cin u C++:

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

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

	return 0;
}

Izlaz:

std::cin

Evo snimke zaslona koda:

std::cin

Objašnjenje koda:

  1. Uključite iostream datoteku zaglavlja u naš program. Cin objekt je definiran u ovoj datoteci zaglavlja.
  2. Uključite std imenski prostor za korištenje njegovih klasa. Nećete morati pozivati ​​std kada koristite njegove klase.
  3. Pozovite funkciju main(). Programski kod treba dodati unutar njegovog tijela.
  4. Početak tijela programa.
  5. Proglasite cjelobrojna varijabla imenovani broj.
  6. Ispišite poruku na zaslonu koja od korisnika traži da unese broj.
  7. Očitajte vrijednost koju je korisnik unio na konzoli s tipkovnice.
  8. Ispišite gore pročitanu vrijednost na konzoli uz ostali tekst.
  9. Program bi trebao vratiti vrijednost ako se uspješno izvrši.
  10. Kraj tijela glavne funkcije.

std::cerr

Objekt cerr tvori standardni tok pogrešaka za ispisivanje pogrešaka C++. Cerr je instanca klase ostream. Objekt cerr nije u međuspremniku. To znači da se koristi kada se poruka o pogrešci treba odmah prikazati.

Budući da nije u međuspremniku, ne pohranjuje poruku o pogrešci za kasniji prikaz. Koristi se zajedno s operatorom umetanja toka (<<).

Primjer

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

	cerr << "An Error occurred!";

	return 0;
}

Izlaz:

std::cerr

Evo snimke zaslona koda:

std::cerr

Objašnjenje koda:

  1. Uključi iostream datoteku zaglavlja gdje je definiran cerr objekt.
  2. Uključite prostor imena std tako da ga ne moramo pozivati ​​kada koristimo njegove klase.
  3. Pozovite funkciju main(). Programsku logiku treba dodati unutar njegovog tijela. Otvaranje vitičaste zagrade označava početak tijela funkcije.
  4. Koristite objekt cerr za ispis pogreške na konzoli.
  5. Program mora vratiti vrijednost nakon uspješnog izvođenja.
  6. Kraj tijela glavne funkcije.

std::začepiti

Objekt clog je instanca klase ostream. Koristi se za prikaz grešaka na standardnom zaslonu, monitoru. Sličan je objektu cerr, ali je u međuspremniku. Budući da je u međuspremniku, pohranjuje poruku o pogrešci u međuspremnik dok se međuspremnik ne napuni/isprazni. Koristi se zajedno s operatorom za umetanje toka (<<).

Primjer

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

Izlaz:

std::začepiti

Evo snimke zaslona koda:

std::začepiti

Objašnjenje koda:

  1. Uključujući iostream datoteku zaglavlja u kojoj je definiran objekt začepljenja.
  2. Uključivanje std imenskog prostora kako bismo mogli koristiti njegove klase bez pozivanja.
  3. Pozivanje funkcije main(). Programsku logiku treba dodati unutar njegovog tijela. { označava početak tijela funkcije.
  4. Upotrijebite objekt začepljenja za ispis pogreške na standardnom izlazu, monitoru.
  5. Program mora vratiti vrijednost nakon uspješnog završetka.
  6. Kraj tijela funkcije main().

Rješavanje pogreške s IO tokovima

Da biste provjerili je li tok valjan ili ne, možete ga koristiti kao Booleovu vrijednost.

Evo primjera:

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

Da biste dobili više pojedinosti o statusu streama, možete koristiti ove funkcije:

  • good()- vratit će true ako je sve u redu.
  • bad() - vratit će true ako dođe do fatalne pogreške.
  • fail() - vratit će true nakon neuspješne operacije toka.
  • eof()- će vratiti true ako dođe do kraja datoteke.

Da biste saznali je li određena operacija čitanja/pisanja uspjela, testirajte rezultat čitanja.

Na primjer, da provjerite je li korisnik unio važeći cijeli broj, učinite ovo:

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

Rezime

  • Ulazni i izlazni zadaci In C++ obavljaju se nizom bajtova. Bajtovi se nazivaju tokovi.
  • U ulaznom toku, bajtovi teku od ulaznog uređaja poput tipkovnice do glavne memorije.
  • U izlaznom toku, bajtovi iz glavne memorije zatim u izlazni uređaj poput monitora.
  • Objekt cin je instanca klase istream. Čita unos s uređaja za unos poput tipkovnice.
  • Objekt cout je instanca klase ostream. Proizvodi izlaz na izlaznim uređajima poput monitora.
  • Objekt cerr je instanca klase ostream. Prikazuje objekte grešaka na monitoru.
  • Objekt clog je instanca klase ostream. Prikazuje poruke o greškama na izlaznim uređajima.
  • Objekt clog sprema poruke o pogreškama u međuspremnik, dok objekt cerr to ne čini.

Sažmite ovu objavu uz: