C++ Perustulo/lähtö: Cout, Cin, Cerr Esimerkki

Mitä streamit sisältävät C++?

C++ tarjoaa käyttäjille useita kirjastoja, joita he voivat käyttää syöttö-/tulostustehtävien suorittamiseen. Nämä tehtävät tehdään tavujonojen muodossa, joita kutsutaan yleisesti virroiksi.

Virrat on jaettu kahteen osaan:

Virtojen tyypit

  • Syöttövirta: Tämä on eräänlainen tietovirta, jossa tavut virtaavat laitteesta, kuten näppäimistöstä, päämuistiin.
  • Lähtövirta: Tämä on eräänlainen virta, jossa tavut virtaavat vastakkaiseen suuntaan, eli päämuistista sitten laitteeseen, kuten näyttöruutuun.

Miten streamit toimivat?

C++ streamit toimivat seuraavasti:

  1. Ensin stream alustetaan oikealla tyypillä.
  2. Seuraavaksi sinun tulee ilmoittaa missä I / O- tapahtuu käyttämällä get/put-osoittimia.
  3. Kun olet päässyt oikeaan paikkaan streamissa, voit suorittaa syöttö- ja tulostustehtäviä käyttämällä >>- ja <<-operaattoreita.

Toimintotaulukko

Seuraavat toiminnot ovat stream.h-otsikkotiedostossa:

luokka Tehtävät
Filebuf Se asettaa tiedostopuskurit lukemaan/kirjoittamaan. Siinä on close()- ja open()-funktiot
fstreambase Se on perusluokka luokille ifstream, fstream ja ofstream. Sen toiminnot ovat yhteisiä tiedostovirroille.
ifstream Se on syöttötiedostojen virtaluokka syöttötoimintojen tarjoamiseen.
ylävirtaan Se on tulostustiedostojen stream-luokka, joka tarjoaa tulostustoimintoja.
virtaus Se on input/output stream -luokka. Se tukee samanaikaisia ​​syöttö-/lähtötoimintoja.

C++ Input/Oput otsikkotiedostot

C++ tarjoaa kolme kirjastoa, joissa on toimintoja perussyöttö-/lähtötehtävien suorittamiseen. Niihin kuuluvat:

  • Iostream: Se on lyhenne sanoista standardin input/output stream. Tämä otsikkotiedosto sisältää määritelmät objekteille, kuten cin/cout/cerr.
  • Iomanip: Se on lyhenne sanoista input/output manipulators. Kirjastossa on toimintoja, joita voidaan käyttää virtojen käsittelyyn. Se sisältää määritelmiä objekteille, kuten setw, setprecision ja muut.
  • Fstream: Tämä on otsikkotiedosto tiedostovirran kuvaamiseksi. Se käsittelee dataa, joka luetaan tiedostosta syötteenä tai joka kirjoitetaan tiedostoon, lähtöön.

Avainsanat cin ja cout ovat erittäin suosittuja C++. Niitä käytetään syötteiden ottamiseen ja tulosteiden tulostamiseen. Jotta voit käyttää niitä, sinun on sisällytettävä ohjelmaan iostream-otsikkotiedosto. Syynä on, että ne on määritelty kyseisessä otsikkotiedostossa. Jos iostream-otsikkotiedostoa ei sisällytetä, syntyy virhe. Tämä johtuu epäonnistumisesta C++ kääntäjä ymmärtääksesi avainsanojen merkityksen.

Tärkeimmät iostream-otsikkotiedostossa määritellyt objektit ovat cin, cout, cerr ja clog. Keskustellaan niistä.

std::out

Cout-objekti on iostream-luokan esiintymä. Sitä käytetään tulosteen tuottamiseen tavallisella tulostuslaitteella, joka on tavallisesti näyttö. Sitä käytetään yhdessä streamin lisäysoperaattorin (<<) kanssa.

esimerkki

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

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

lähtö:

std::out

Tässä on kuvakaappaus koodista:

std::out

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto, jossa cout-objekti on määritetty.
  2. Sisällytä std-nimiavaruus, jotta meidän ei tarvitse kutsua sitä, kun käytämme sen luokkia.
  3. Kutsu main()-funktiota. Ohjelmakoodi tulee lisätä sen runkoon. Avautuva kihara aaltosulkeet { merkitsee sen rungon alkua.
  4. Luo merkkimuuttuja nimeltä Tervetuloa pitämään merkkijonon Tervetuloa Guru99:een.
  5. Tulosta tervetuloa-merkkijonon arvo konsoliin. Loppu on a C++ avainsana tarkoittaa loppuriviä. Se siirtää kohdistinta aloittaaksesi tekstin tulostamisen seuraavalle riville.
  6. Ohjelman on palautettava arvo onnistuneen suorituksen jälkeen.
  7. Funktion main() rungon loppu.

std::cin

cin-objekti on istream-luokan esiintymä. Se lukee syötettä syöttölaitteelta, näppäimistöltä. Sitä käytetään tavallisesti yhdessä erotusoperaattorin (>>) kanssa. Poimintaobjekti vastaa näppäimistön kautta syötettyjen tietojen purkamisesta cin-objektista.

esimerkki

Seuraava esimerkki osoittaa, kuinka cin-avainsanaa käytetään C++:

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

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

	return 0;
}

lähtö:

std::cin

Tässä on kuvakaappaus koodista:

std::cin

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto ohjelmaamme. cin-objekti on määritetty tässä otsikkotiedostossa.
  2. Sisällytä std-nimiavaruus käyttääksesi sen luokkia. Sinun ei tarvitse kutsua std:tä, kun käytät sen luokkia.
  3. Kutsu main()-funktiota. Ohjelmakoodi tulee lisätä sen runkoon.
  4. Ohjelman rungon alku.
  5. Ilmoita kokonaislukumuuttuja nimetty numero.
  6. Tulosta näytölle viesti, joka kehottaa käyttäjää syöttämään numeron.
  7. Lue käyttäjän konsoliin kirjoittama arvo näppäimistöltä.
  8. Tulosta yllä luettu arvo konsoliin muun tekstin rinnalle.
  9. Ohjelman pitäisi palauttaa arvo, jos se suoritetaan onnistuneesti.
  10. Päätoiminnon rungon loppu.

std::cerr

Cerr-objekti muodostaa vakiovirhevirran virheiden tulostamiseksi C++. Cerr on ostream-luokan esiintymä. Cerr-objekti on puskuroimaton. Tämä tarkoittaa sitä, että sitä käytetään, kun virheilmoitus on tarkoitus näyttää välittömästi.

Koska se on puskuroimaton, se ei tallenna virheilmoitusta myöhempää näyttöä varten. Sitä käytetään yhdessä streamin lisäysoperaattorin (<<) kanssa.

esimerkki

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

	cerr << "An Error occurred!";

	return 0;
}

lähtö:

std::cerr

Tässä on kuvakaappaus koodista:

std::cerr

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto, johon cerr-objekti on määritetty.
  2. Sisällytä std-nimiavaruus, jotta meidän ei tarvitse kutsua sitä, kun käytämme sen luokkia.
  3. Kutsu main()-funktiota. Ohjelmalogiikka tulisi lisätä sen runkoon. Avautuva kihara aaltosulke merkitsee toiminnon rungon alkua.
  4. Käytä cerr-objektia tulostaaksesi virheen konsoliin.
  5. Ohjelman on palautettava arvo onnistuneen suorituksen jälkeen.
  6. Päätoiminnon rungon loppu.

std::tukos

Clog-objekti on ostream-luokan esiintymä. Sitä käytetään virheiden näyttämiseen vakionäytössä, näytössä. Se on samanlainen kuin cerr-objekti, mutta se on puskuroitu. Koska se on puskuroitu, se tallentaa virheilmoituksen puskuriin, kunnes puskuri on täytetty/huuhdettu. Sitä käytetään yhdessä streamin lisäysoperaattorin (<<) kanssa.

esimerkki

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

lähtö:

std::tukos

Tässä on kuvakaappaus koodista:

std::tukos

Koodin selitys:

  1. Sisältää iostream-otsikkotiedoston, jossa tukosobjekti on määritetty.
  2. Mukaan lukien std-nimiavaruus, jotta voimme käyttää sen luokkia kutsumatta sitä.
  3. Main()-funktion kutsuminen. Ohjelmalogiikka tulisi lisätä sen runkoon. { merkitsee funktion rungon alkua.
  4. Käytä tukosobjektia tulostaaksesi virheen vakiolähtöön, näyttöön.
  5. Ohjelman on palautettava arvo, kun se on suoritettu onnistuneesti.
  6. Funktion main() rungon loppu.

Virheiden käsittely IO-virroissa

Voit tarkistaa, onko stream kelvollinen vai ei, käyttämällä sitä Boolen arvona.

Tässä on esimerkki:

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

Saat lisätietoja streamin tilasta käyttämällä näitä toimintoja:

  • hyvä()- palaa tosi, jos kaikki on hyvin.
  • bad()- palauttaa arvon tosi, jos tapahtuu vakava virhe.
  • fail()- palauttaa arvon tosi epäonnistuneen suoratoiston jälkeen.
  • eof()- palauttaa arvon tosi, jos se saavuttaa tiedoston loppuun.

Testaa lukutulosta saadaksesi selville, epäonnistuiko jokin luku/kirjoitustoiminto.

Jos haluat esimerkiksi tarkistaa, onko käyttäjä syöttänyt kelvollisen kokonaisluvun, toimi seuraavasti:

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

Yhteenveto

  • Syöttö- ja tulostustehtävät In C++ tehdään tavusekvenssin kautta. Tavuja kutsutaan virroiksi.
  • Syöttövirrassa tavut virtaavat syöttölaitteesta kuten näppäimistöstä päämuistiin.
  • Lähtövirrassa tavut päämuistista sitten tulostuslaitteeseen, kuten näyttöön.
  • cin-objekti on istream-luokan esiintymä. Se lukee syötettä syöttölaitteelta, kuten näppäimistöltä.
  • Cout-objekti on ostream-luokan esiintymä. Se tuottaa tulosteita tulostuslaitteille, kuten näytölle.
  • Cerr-objekti on ostream-luokan esiintymä. Se näyttää virheobjektit näytöllä.
  • Clog-objekti on ostream-luokan esiintymä. Se näyttää virheilmoitukset tulostuslaitteissa.
  • Clog-objekti puskuroi virheilmoitukset, kun taas cerr-objekti ei.