Mikä on cin.ignore () ja mikä on sen käyttö?


Paras vastaus

Täällä tyhjennät lisää Cinillä

Käyttämällä , cin.get , cin.getline ja cin. ohita

>> -operaattorin (cin) käyttö

The> > -operaattoria voidaan käyttää, kun haluat yksinkertaisesti lukea seuraavat käyttäjän kirjoittamat muut tyhjät tyhjät merkit merkiksi tai merkistöön. Ensimmäistä välilyöntiä seuraavat tulostettavat merkit jätetään huomioimatta eikä niitä tallenneta muuttujaan. Älä käytä lauseketta, kuten

cin >> UserExplanation;

jos esimerkiksi haluat saada koko lause, joka sisältää käyttäjän välilyönnit. Siinä tapauksessa sinun olisi parempi palvella cin-jäsenfunktioita get tai getline .

Kysymys : Tallennetaanko nolla-terminaattori automaattisesti UserExplanation-merkistöryhmän loppuun?

cin.get-sovelluksen käyttäminen

Muotoilematon saada jäsen -funktio toimii kuten >> -operaattori kahdella poikkeuksella. Ensinnäkin get -toiminto sisältää välilyöntejä , kun taas erotin sulkee pois välilyönnin, kun ios :: skipws-lippu on asetettu (oletus). Toiseksi get-funktio ei todennäköisesti aiheuta sidotun ulostulovirran (esimerkiksi cout) huuhtelua.

Get-funktion muunnelma määrittää puskuriosoitteen ja luettavien merkkien enimmäismäärän. Tästä on hyötyä rajoitettaessa tiettyyn muuttujaan lähetettyjen merkkien määrää, kuten tämä esimerkki osoittaa:

#include

void main()

{

char line[25];

cout << " Type a line terminated by carriage return\n>";

cin.get( line, 25 );

cout << " " << line;

}

Tässä esimerkissä voit kirjoittaa enintään 24 merkkiä ja päättävän merkin. Kaikki jäljellä olevat merkit voidaan purkaa myöhemmin.

cin.getline-toiminnon käyttäminen

Getline-jäsenfunktio on samanlainen kuin saada toiminto. Molemmat toiminnot sallivat kolmannen argumentin, joka määrittää syötteen päättävän merkin. Oletusarvo on uuden rivin merkki. Molemmat toiminnot varaavat yhden merkin vaaditulle loppumerkille . get kuitenkin jättää lopettavan merkin streamiin ja getline poistaa lopetettavan merkin.

Seuraava esimerkki määrittää syötteelle päättävän merkin stream:

#include

void main()

{

char line[100];

cout << " Type a line terminated by "t"" << endl;

cin.getline( line, 100, "t" );

cout << line;

}

cin.ignore-sovelluksen käyttäminen

cin.ignore (int nCount = 1, int delim = EOF); ​​

Parametrit

nCount - Poimittavien merkkien enimmäismäärä. delim - erotinmerkki (oletuksena EOF).

Huomautuksia

Poimii ja hylkää enintään nCount merkkejä. Pura pysähtyy, jos erotinmerkki erotetaan tai tiedoston loppu on saavutettu. Jos delim = EOF (oletus), vain tiedoston ehdon loppu aiheuttaa päättymisen. Erotinmerkki puretaan.

Vastaus

cin.ignore () on ennalta määritetty funktio, joka ohittaa / tyhjentää yhden tai useamman merkin syöttöpuskurista.

Edellytykset: 1. -säädin käsittelee tyhjää tilaa eli " ", " \ t ", " \ n " erotinmerkkinä.

2. Kun luet jotain tavallisesta syöttölaitteesta, näppäimistöstä, se siirtyy ensin -tulopuskuriin. Syöttöpuskuri on paikka, joka pitää kaikki saapuvat tiedot ennen sitä jatkuu prosessoriin käsittelyä varten.

Ongelma: 1. Oletetaan, että haluat lukea "merkkijonon" käyttäjältä. merkinimi [10];

2. Jotenkin päädyt käyttämään ciniä cin.getline () cin >> myname;

3 sijaan. Kirjoitan "ABC" ja paina sitten Enter-näppäintä. se vie ABC: n ja käsittelee seuraavaa "\ n" erottimena.Tämän seurauksena "\ n" ei lueta ja se pysyy -tulopuskurissa.

4. Joten tässä cin.ignore () jättää huomiotta nämä lukemattomat merkit, jotka jäivät syöttöpuskuriin.

Ratkaisu: Jos haluat vältä tilanteita, muista vain , ettet käytä ciniä merkkijonojen kirjoittamiseen. ja tada, ongelma ratkaistu !!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *