C++ Academy · Oppitunti

std::cin- ja std::cout-virtojen oikea käyttö

Käsitelkää syötettä ja tulostetta standardivirroilla ja välttäkää yleiset sudenkuopat.

Oppitunti 1/413 vaihetta

std::cin- ja std::cout-virtojen oikea käyttö on ilmainen C++ Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu C++ Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C++ Academy-kurssilla on yhteensä 4 oppituntia.

iostream-otsikkotiedosto

Sekä std::cin että std::cout ovat <iostream>-otsikkotiedostosta peräisin olevia olioita. Ne edustavat päätelaitteen vakiosyöte- ja vakiotulostusvirtoja.

Tulostaminen std::cout-virralla

Siirtäkää arvot std::cout-virtaan operaattorilla <<. Se toimii kaikilla tyypeillä, joille on määritelty operator<<-ylikuormitus — tämä koskee kaikkia sisäänrakennettuja tyyppejä ja tyyppiä std::string.

int age = 30;
std::string name = "Ada";
std::cout << "Name: " << name << ", Age: " << age << "\n";

Syötteen lukeminen std::cin-virrasta

Lukekaa arvot muodossa std::cin >> variable. Tyhjätila erottaa osat toisistaan.

int age;
std::string name;
std::cout << "Enter name and age: ";
std::cin >> name >> age;
std::cout << name << " is " << age << "\n";

Tyhjätilan ohittaminen

Oletusarvoisesti >> ohittaa alussa olevan tyhjätilan (välilyönnit, sarkaimet ja rivinvaihdot) ennen lukemista. Näin yleensä halutaankin toimivan, mutta yksittäisiä merkkejä luettaessa tähän on kiinnitettävä huomiota.

Kokonaisen rivin lukeminen

std::cin >> name lukee vain yhden sanan. Kun haluatte lukea välilyöntejä sisältävän rivin, käyttäkää funktiota std::getline.

std::string line;
std::getline(std::cin, line);
std::cout << "You said: " << line;

Operaattoreiden >> ja getline yhdistäminen: yleinen virhe

std::cin >> n-kutsun jälkeen rivinvaihto jää syötepuskuriin. Seuraava getline lukee tyhjän merkkijonon. Tyhjentäkää rivinvaihto ensin.

int n;
std::cin >> n;
std::cin.ignore();  // consume the leftover newline
std::string line;
std::getline(std::cin, line);

Virran tila

Virroilla on tilabitit: good, eof, fail ja bad. Tarkistakaa ehdolla if (std::cin), että virtaa voi edelleen käyttää arvon lukemisen jälkeen.

Tiedoston lopun tunnistaminen

Tiedoston lopun ilmaisee Unixissa Ctrl+D ja Windowsissa Ctrl+Z. Käsitelkää kaikki syöte silmukassa, joka jatkuu niin kauan kuin virta on kunnossa.

int n;
while (std::cin >> n) {
    std::cout << n * 2 << "\n";
}

Nopeampi I/O kilpailuohjelmointiin

Poistakaa synkronointi C:n stdio-kirjaston kanssa nopeuttaaksenne lukemista kilpailuohjelmoinnissa. Irrottakaa myös cin ja cout toisistaan.

std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);

std::endl ja \n jälleen

std::endl kirjoittaa rivinvaihdon ja tyhjentää puskurin. "\n" kirjoittaa vain rivinvaihdon. Käyttäkää silmukoissa merkintää "\n", jotta suorituskyky säilyy hyvänä.

Tyhjentäminen manuaalisesti

Jos puskuri on tyhjennettävä ilman rivinvaihtoa, käyttäkää manipulaattoria std::flush. Tämä on hyödyllistä edistymisen ilmaisimissa.

for (int i = 0; i < 100; ++i) {
    std::cout << "\r" << i << "%" << std::flush;
    // ... work ...
}

Pikatarkistus

Mikä ero on std::endl- ja "\n"-merkinnöillä tulostuksessa?

Kertaus

Käyttäkää std::cout-virtaa yhdessä operaattorin << kanssa tulostamiseen ja std::cin-virtaa yhdessä operaattorin >> kanssa osien lukemiseen. Käyttäkää kokonaisille riveille funktiota std::getline ja poistakaa jäljelle jääneet rivinvaihdot funktiolla cin.ignore() numeerisen syötteen jälkeen.

Aloita maksutta

Opi C++ tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”std::cin- ja std::cout-virtojen oikea käyttö” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa C++ Academy-oppimispolun 3 oppituntia, myös oppitunnin “std::cin- ja std::cout-virtojen oikea käyttö”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. C++ Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”std::cin- ja std::cout-virtojen oikea käyttö”?

Käsitelkää syötettä ja tulostetta standardivirroilla ja välttäkää yleiset sudenkuopat. Harjoittelet C++ Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni C++ Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin C++ Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”std::cin- ja std::cout-virtojen oikea käyttö”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä C++ Academy-oppitunnilla?

Kyllä. Jokainen C++ Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. std::cin- ja std::cout-virtojen oikea käyttö
  2. Tulosteen muotoilu iomanipilla
  3. Syötteen turvallinen lukeminen getlinella
  4. std::cerr- ja std::clog-virtojen käyttö
← Takaisin: C++ Academy