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.




