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:
- Prvo se tok inicijalizira s pravom vrstom.
- Zatim biste trebali navesti gdje I / O dogodit ฤe se pomoฤu pokazivaฤa get/put.
- 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:
Evo snimke zaslona koda:
Objaลกnjenje koda:
- Ukljuฤite datoteku zaglavlja iostream gdje je definiran objekt cout.
- Ukljuฤite prostor imena std tako da ga ne moramo pozivati โโkada koristimo njegove klase.
- Pozovite funkciju main(). Programski kod treba dodati unutar njegovog tijela. Otvaranje vitiฤaste zagrade { oznaฤava poฤetak njegovog tijela.
- Napravite znakovnu varijablu pod nazivom dobrodoลกli za drลพanje niza Welcome to Guru99.
- 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.
- Program mora vratiti vrijednost nakon uspjeลกnog izvoฤenja.
- 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:
Evo snimke zaslona koda:
Objaลกnjenje koda:
- Ukljuฤite iostream datoteku zaglavlja u naลก program. Cin objekt je definiran u ovoj datoteci zaglavlja.
- Ukljuฤite std imenski prostor za koriลกtenje njegovih klasa. Neฤete morati pozivati โโstd kada koristite njegove klase.
- Pozovite funkciju main(). Programski kod treba dodati unutar njegovog tijela.
- Poฤetak tijela programa.
- Proglasite cjelobrojna varijabla imenovani broj.
- Ispiลกite poruku na zaslonu koja od korisnika traลพi da unese broj.
- Oฤitajte vrijednost koju je korisnik unio na konzoli s tipkovnice.
- Ispiลกite gore proฤitanu vrijednost na konzoli uz ostali tekst.
- Program bi trebao vratiti vrijednost ako se uspjeลกno izvrลกi.
- 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:
Evo snimke zaslona koda:
Objaลกnjenje koda:
- Ukljuฤi iostream datoteku zaglavlja gdje je definiran cerr objekt.
- Ukljuฤite prostor imena std tako da ga ne moramo pozivati โโkada koristimo njegove klase.
- Pozovite funkciju main(). Programsku logiku treba dodati unutar njegovog tijela. Otvaranje vitiฤaste zagrade oznaฤava poฤetak tijela funkcije.
- Koristite objekt cerr za ispis pogreลกke na konzoli.
- Program mora vratiti vrijednost nakon uspjeลกnog izvoฤenja.
- 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:
Evo snimke zaslona koda:
Objaลกnjenje koda:
- Ukljuฤujuฤi iostream datoteku zaglavlja u kojoj je definiran objekt zaฤepljenja.
- Ukljuฤivanje std imenskog prostora kako bismo mogli koristiti njegove klase bez pozivanja.
- Pozivanje funkcije main(). Programsku logiku treba dodati unutar njegovog tijela. { oznaฤava poฤetak tijela funkcije.
- Upotrijebite objekt zaฤepljenja za ispis pogreลกke na standardnom izlazu, monitoru.
- Program mora vratiti vrijednost nakon uspjeลกnog zavrลกetka.
- 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.




