C++ Põhiline sisend/väljund: Cout, Cin, Cerr Näide

⚡ Nutikas kokkuvõte

C++ Sisend- ja väljundoperatsioonid tuginevad voogobjektidele, mis liigutavad andmeid baitjadadena programmide ja seadmete vahel, kusjuures cin loeb klaviatuuril sisestatud andmeid ning cout, cerr ja clog kirjutavad väljundi ekraanile.

  • 🔘 Vood: Sisend- ja väljundülesanded liiguvad baitjadadena, mida nimetatakse voogudeks, liigutades andmeid põhimälu ja seadmete vahel.
  • 📥 Päisefailid: iostreami, iomanipi ja fstreami teegid defineerivad põhiliste sisendi ja väljundi jaoks kasutatavad objektid ja manipulaatorid.
  • 🖨️ cout ja cin: cout objekt prindib sisestamise operaatoriga, samas kui cin loeb väärtusi ex-igatractsioonioperaator.
  • ⚠️ cerr ja ummistus: Mõlemad teatavad vigadest, kuid cerr jääb koheseks kuvamiseks puhverdamata, samas kui clog puhverdab sõnumeid kõigepealt.
  • 🛠️ Vigade käsitlemine: Hea, halva, ebaõnnestunud ja eof-kontrollid loevad voo olekut, seega ebaõnnestunud toimingud tabatakse ohutult.
  • 🤖 AI abi: Tehisintellekti kodeerimisassistendid, näiteks GitHub Copilot, genereerivad cin- ja cout-tüüpi mallid lühikese kommentaari või funktsiooni nime põhjal.

C++ Põhiline sisend-väljund

Mida sisaldavad vood C++?

C++ pakub kasutajatele mitmeid teeke, mida nad saavad kasutada sisend-/väljundülesannete täitmiseks. Neid ülesandeid tehakse baidijadadena, mida rahvapäraselt nimetatakse voogudeks.

Vood jagunevad kaheks:

Voogude tüübid

  • Sisendvoog: See on teatud tüüpi voog, kus baidid voolavad seadmest, näiteks klaviatuurilt, põhimällu.
  • Väljundvoog: See on vootüüp, kus baidid voolavad vastupidises suunas, st põhimälust ja seejärel seadmesse, näiteks kuvarisse.

Kuidas vood töötavad?

C++ vood töötavad järgmiselt:

  1. Esiteks lähtestatakse voog õiget tüüpi.
  2. Järgmisena peaksite get/put pointerite abil määrama, kus I/O toimub.
  3. Pärast voos õigesse asukohta jõudmist saate sooritada sisend- ja väljundtoiminguid, kasutades vastavalt >> ja << operaatoreid.

Funktsioonitabel

Päisefailis stream.h pakutavad funktsioonid on järgmised:

klassFunktsioonid
FilebufSee määrab failipuhvrid lugemiseks/kirjutamiseks. Selles on funktsioonid close () ja open ().
fstreambaseSee on klasside ifstream, fstream ja ofstream baasklass. Selle toimingud on failivoogudele ühised.
ifstreamSee on sisendfaili vooklass sisendtoimingute pakkumiseks.
väljaspool vooluSee on väljundfaili vooklass väljundoperatsioonide pakkumiseks.
vooluSee on sisend-/väljundvoo klass. See toetab samaaegseid sisend- ja väljundoperatsioone.

C++ Päisefailid sisendi/väljundi jaoks

C++ pakub kolme teeki, mis on varustatud funktsioonidega põhiliste sisend-/väljundülesannete täitmiseks. Nende hulka kuuluvad:

  • Iostream: See on standardse sisend-/väljundvoo akronüüm. See päisefail sisaldab selliste objektide määratlusi nagu cin/cout/cerr.
  • Iomanip: See on akronüüm sisendi/väljundi manipulaatoritest. Teegiga on kaasas funktsioonid, mida saab kasutada voogudega manipuleerimiseks. See sisaldab selliste objektide määratlusi nagu setw, setprecision ja teised.
  • Fstream: See on päisefail failivoo kirjeldamiseks. See käsitleb andmeid, mis loetakse failist sisendiks või mis kirjutatakse faili ehk väljundisse.

Märksõnad cin ja cout on riigis väga populaarsed C++. Neid kasutatakse vastavalt sisendite ja printimisväljundite võtmiseks. Nende kasutamiseks peate oma programmi lisama iostream päisefaili. Põhjus on selles, et need on määratletud selles päisefailis. Kui iostreami päisefaili ei lisata, tekib tõrge. See tuleneb ebaõnnestumisest C++ koostaja, et mõista märksõnade tähendust.

Peamised iostreami päisefailis määratletud objektid on cin, cout, cerr ja clog. Arutame neid.

std::cout

Cout-objekt on iostream klassi eksemplar. Seda kasutatakse väljundi tootmiseks tavalisel väljundseadmel, milleks on tavaliselt ekraan. Seda kasutatakse koos voo sisestamise operaatoriga (<<).

Näide

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

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

Väljund:

std::cout

Siin on koodi ekraanipilt:

std::cout

Code Selgitus:

  1. Kaasake iostreami päisefail, kus cout-objekt on määratletud.
  2. Kaasake std-nimeruum, et me ei peaks seda klasside kasutamisel kutsuma.
  3. Kutsuge funktsioon main(). Programmi kood tuleks lisada selle kehasse. Avanev lokkis sulg { märgib selle keha algust.
  4. Loo märgimuutuja nimega welcome, et hoida stringi Welcome to Guru99.
  5. Printige konsoolile tervitusstringi väärtus. Endl on a C++ märksõna tähenduses lõpprida. See liigutab kursorit, et alustada teksti printimist järgmisele reale.
  6. Programm peab eduka täitmise korral tagastama väärtuse.
  7. Funktsiooni main() keha lõpp.

std::cin

Cin-objekt on istream-klassi eksemplar. See loeb sisendit sisendseadmelt, klaviatuurilt. Tavaliselt kasutatakse seda koos eksemplarigatractsioonioperaator (>>). Näidetraction objekt vastutab näitekstraccin-objektist klaviatuuri kaudu sisestatud andmete sisestamine.

Näide

Järgmine näide näitab, kuidas kasutada märksõna cin C++:

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

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

	return 0;
}

Väljund:

std::cin

Siin on koodi ekraanipilt:

std::cin

Code Selgitus:

  1. Kaasake iostreami päisefail meie programmi. Cin-objekt on määratletud selles päisefailis.
  2. Selle klasside kasutamiseks lisage nimeruum std. Selle klasside kasutamisel ei pea te std-d helistama.
  3. Kutsuge funktsioon main(). Programmi kood tuleks lisada selle kehasse.
  4. Programmi põhiosa algus.
  5. Deklareerige täisarv muutuja nimeline number.
  6. Printige ekraanile sõnum, milles palutakse kasutajal number sisestada.
  7. Lugege klaviatuurilt kasutaja konsooli sisestatud väärtust.
  8. Printige ülaltoodud väärtus konsoolil koos muu tekstiga.
  9. Programm peaks eduka käivitamise korral tagastama väärtuse.
  10. Põhifunktsiooni keha lõpp.

std::cerr

Cerr objekt moodustab standardse veavoo vigade väljastamiseks C++. Cerr on ostream klassi eksemplar. Cerr objekt on puhverdamata. See tähendab, et seda kasutatakse siis, kui kohe kuvatakse veateade.

Kuna see on puhverdamata, ei salvesta see veateadet hilisemaks kuvamiseks. Seda kasutatakse koos voo sisestamise operaatoriga (<<).

Näide

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

	cerr << "An Error occurred!";

	return 0;
}

Väljund:

std::cerr

Siin on koodi ekraanipilt:

std::cerr

Code Selgitus:

  1. Kaasake iostreami päisefail, kus cerr-objekt on määratletud.
  2. Kaasake std-nimeruum, et me ei peaks seda klasside kasutamisel kutsuma.
  3. Kutsuge funktsioon main(). Programmi loogika tuleks lisada selle kehasse. Avanev lokkis traks tähistab funktsiooni keha algust.
  4. Kasutage konsooli vea printimiseks objekti cerr.
  5. Programm peab eduka täitmise korral tagastama väärtuse.
  6. Põhifunktsiooni keha lõpp.

std::ummistus

Clog-objekt on ostream-klassi eksemplar. Seda kasutatakse vigade kuvamiseks standardekraanil, monitoril. See sarnaneb cerr-objektiga, kuid on puhverdatud. Kuna see on puhverdatud, salvestab see veateate puhvris, kuni puhver on täidetud/loputatud. Seda kasutatakse koos voo sisestamise operaatoriga (<<).

Näide

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

Väljund:

std::ummistus

Siin on koodi ekraanipilt:

std::ummistus

Code Selgitus:

  1. Sealhulgas iostreami päisefail, milles on määratletud ummistuse objekt.
  2. Kaasa arvatud std-nimeruum, et saaksime kasutada selle klasse ilma seda kutsumata.
  3. Funktsiooni main() kutsumine. Programmi loogika tuleks lisada selle kehasse. { tähistab funktsiooni keha algust.
  4. Kasutage ummistusobjekti vea printimiseks standardväljundile, monitorile.
  5. Programm peab pärast edukat lõpetamist tagastama väärtuse.
  6. Funktsiooni main() keha lõpp.

Vigade käsitlemine IO-voogudega

Samad vooobjektid annavad ka teada, kas toiming õnnestus, mida voo oleku kontrollid näitavad.

Et kontrollida, kas voog on kehtiv või mitte, saate seda kasutada Booleanina.

Siin on näide:

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

Voo oleku kohta lisateabe saamiseks võite kasutada järgmisi funktsioone.

  • hea()- tagastab tõeseks, kui kõik on korras.
  • bad()- tagastab fataalse vea korral tõene.
  • fail()- tagastab pärast ebaõnnestunud vootoimingut tõene.
  • eof()- tagastab väärtuse tõene, kui see jõuab faili lõppu.

Et teada saada, kas konkreetne lugemise/kirjutamise toiming ebaõnnestus, testige lugemistulemust.

Näiteks selleks, et kontrollida, kas kasutaja sisestas kehtiva täisarvu, tehke järgmist.

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

KKK

cout-objekt on tüübikindel ja kasutab sisestusoperaatorit, seega tuvastab see iga väärtuse tüübi automaatselt. C-keele printf tugineb vorminguspetsifikatsioonidele, näiteks %d, mis peavad argumentidele käsitsi vaste leidma.

Endinetraction-operaator peatub esimese tühiku juures, seega cin loeb ainult ühte sõna. Terve rea tühikutega jäädvustamiseks kutsuge välja getline(cin, muutuja), mis loeb kuni reavahetusmärgini.

Mõlemad alustavad uut rida, aga endl tühjendab iga kord ka väljundpuhvri, mis võib aeglustada hõivatud tsükleid. Eelista tavalist reavahetust ja jäta endl juhuks, kui puhver peab kohe tühjenema.

Objektid cin, cout, cerr ja clog asuvad nimeruumis std. Nimeruumi std abil kirjutades saab std::cout asemel sisestada cout. Suured projektid hoiavad kokkupõrgete vältimiseks sageli alles selgesõnalise std eesliite.

Lisage iomanip päis ja kasutage cout-iga manipulaatoreid. Manipulaator setw reserveerib väljalaiuse ja setprecision määrab kuvatavate numbrite arvu, vormindades numbreid ja veerge salvestatud väärtusi muutmata.

Jah. Kuna cout ja cerr on eraldi vood, saab shell tavalise väljundi faili suunata, samal ajal kui vead ekraanile jõuavad. Koodis saab rdbuf suunata voo teise puhvrisse.

Jah. Tehisintellekti kodeerimisassistendid loevad kommentaari või funktsiooni nime ning loovad cin- ja cout-laused, lisaks iostreami lisamise ja vormindatud viiba. RevÄärmusjuhtumite genereeritud vooloogika vaatamine jääb targaks.

Jah. GitHubi koopia Täidab cout-vormingut, cin-valideerimistsüklit ja cerr-veakontrolli tippimise ajal. See on 2026. C++ Koodi intelligentsus lisab semantilise sümboliteadlikkuse, nii et mitme faili soovitused jäävad järjepidevaks.

Võta see postitus kokku järgmiselt: