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: