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

⚡ Pametni sažetak

C++ Ulazne i izlazne operacije oslanjaju se na objekte toka koji premještaju podatke kao nizove bajtova između programa i uređaja, pri čemu cin čita unos s tipkovnice, a cout, cerr i clog zapisuju izlaz na zaslon.

  • 🔘 Potoci: Ulazni i izlazni zadaci putuju kao nizovi bajtova koji se nazivaju streamovi, premještajući podatke između glavne memorije i uređaja.
  • 📥 Zaglavne datoteke: Biblioteke iostream, iomanip i fstream definiraju objekte i manipulatore koji se koriste za osnovni ulaz i izlaz.
  • 🖨️ cout i cin: Objekt cout ispisuje s operatorom umetanja, dok cin čita vrijednosti s operatorom ex.tracoperator cije.
  • ⚠️ cerr i začepljenje: Oba prijavljuju greške, ali cerr ostaje bez međuspremnika za trenutni prikaz dok clog prvo međuspremnika poruke.
  • 🛠️ Rukovanje pogreškama: Provjere dobro, loše, neuspješno i krajnje stanje (eof) čitaju stanje toka, tako da se neuspješne operacije sigurno hvataju.
  • 🤖 AI pomoć: AI asistenti za kodiranje poput GitHub Copilota generiraju cin i cout boilerplate iz kratkog komentara ili naziva funkcije.

C++ Osnovni ulazni izlaz

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 će se odvijati I/O pomoću get/put pokazivača.
  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:

KlasaFunkcije
FilebufPostavlja međuspremnike datoteka za čitanje/pisanje. Sadrži funkcije close() i open().
fstreambaseTo je osnovna klasa za klase ifstream, fstream i ofstream. Njegove operacije su zajedničke tokovima datoteka.
ifstreamTo je klasa toka ulazne datoteke za pružanje ulaznih operacija.
ofstreamTo je klasa toka izlazne datoteke za pružanje izlaznih operacija.
fstreamTo 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

Code Objašnjenje:

  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šlica koja će sadržavati niz znakova Dobrodošli u 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 ulaz s ulaznog uređaja, tipkovnice. Obično se koristi zajedno s extracoperator cije (>>). IzlaztracObjekt cije je odgovoran zatracpodaci uneseni putem tipkovnice iz objekta cin.

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

Code Objašnjenje:

  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

Code Objašnjenje:

  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

Code Objašnjenje:

  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

Isti objekti streama također izvještavaju je li operacija uspjela, što otkrivaju provjere stanja streama.

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

Pitanja i odgovori

Objekt cout je siguran po tipu i koristi operator umetanja, tako da automatski detektira tip svake vrijednosti. C-ov printf oslanja se na specifikatore formata kao što je %d koji moraju ručno odgovarati argumentima.

Bivši/atracOperator čitanja se zaustavlja na prvom razmaku, pa cin čita samo jednu riječ. Za hvatanje cijelog retka s razmacima, pozovite getline(cin, variable), koja čita do znaka za novi redak.

Oba započinju novi redak, ali endl također svaki put prazni izlazni međuspremnik, što može usporiti zauzete petlje. Poželjno je koristiti običan znak za novi redak, a endl rezervirati za kada se međuspremnik mora odmah isprati.

Objekti cin, cout, cerr i clog nalaze se u imenskom prostoru std. Pisanje pomoću imenskog prostora std omogućuje vam upisivanje cout umjesto std::cout. Veliki projekti često zadržavaju eksplicitni prefiks std kako bi izbjegli sukobe.

Uključite zaglavlje iomanip i koristite manipulatore s cout. Manipulator setw rezervira širinu polja, a setprecision postavlja koliko se znamenki pojavljuje, formatirajući brojeve i stupce bez promjene pohranjenih vrijednosti.

Da. Budući da su cout i cerr odvojeni streamovi, shell može preusmjeriti normalan izlaz u datoteku dok pogreške i dalje dopiru do zaslona. U kodu, rdbuf može usmjeriti stream na drugi međuspremnik.

Da. AI kodirajući asistenti čitaju komentar ili naziv funkcije i generiraju naredbe cin i cout, plus iostream include i formatirani prompt. RevPregledavanje generirane logike toka za rubne slučajeve ostaje mudro.

Da. GitHub kopilot dovršava cout formatiranje, cin petlje validacije i cerr provjere grešaka dok tipkate. To je 2026. C++ Inteligencija koda dodaje svjesnost o semantičkim simbolima, tako da prijedlozi za više datoteka ostaju dosljedni.

Sažmite ovu objavu uz: