Ce este cin.ignore () și la ce folosește?


Cel mai bun răspuns

Aici veți șterge mai multe cu Cin

Utilizarea , cin.get , cin.getline și cin. ignorați

Utilizarea operatorului >> (cu cin)

The> > operatorul poate fi utilizat atunci când doriți pur și simplu să citiți următoarele caractere care nu sunt în spațiu gol introduse de utilizator într-o matrice de caractere sau caractere. Orice caractere imprimabile care urmează primul spațiu vor fi ignorate și nu vor fi stocate în variabilă. Nu utilizați o declarație de genul,

cin >> UserExplanation;

dacă, de exemplu, doriți pentru a obține o frază întreagă de la utilizator care include spații. În acest caz, ar fi mai bine deservit folosind funcțiile de membru cin get sau getline .

Întrebare : Va fi stocat automat un terminator nul la sfârșitul matricei de caractere, UserExplanation?

Utilizarea cin.get

Funcția de membru get formatat funcționează ca operatorul >> cu două excepții. În primul rând, funcția get include caractere de spațiu alb , în timp ce extractorul exclude spațiul alb atunci când este setat steagul ios :: skipws (implicit). În al doilea rând, funcția get este mai puțin probabil să provoace spălarea unui flux de ieșire legat (cout, de exemplu).

O variație a funcției get specifică o adresă tampon și numărul maxim de caractere de citit. Acest lucru este util pentru limitarea numărului de caractere trimise la o anumită variabilă, așa cum arată acest exemplu:

#include

void main()

{

char line[25];

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

cin.get( line, 25 );

cout << " " << line;

}

În acest exemplu, puteți introduce până la 24 de caractere și un caracter final. Orice caractere rămase pot fi extrase ulterior.

Utilizarea cin.getline

Funcția membru getline este similară cu obține funcția. Ambele funcții permit un al treilea argument care specifică caracterul de terminare pentru intrare. Valoarea implicită este caracterul newline. Ambele funcții rezervă un caracter pentru caracterul de terminare necesar . Cu toate acestea, get lasă caracterul de terminare în flux și getline elimină caracterul de terminare.

Următorul exemplu specifică un caracter de terminare pentru intrare flux:

#include

void main()

{

char line[100];

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

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

cout << line;

}

Utilizarea cin.ignore

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

Parametri

nCount - Numărul maxim de caractere de extras. delim - Caracterul delimitator (implicit EOF).

Observații

Extrage și aruncă până la nCount caractere. Extracția se oprește dacă delimitatorul este extras sau se ajunge la sfârșitul fișierului. Dacă delim = EOF (implicit), atunci doar sfârșitul condiției fișierului determină terminarea. Caracterul delimitator este extras.

Răspuns

cin.ignore () este o funcție predefinită care ignoră / șterge unul sau mai multe caractere din bufferul de intrare.

Cerințe preliminare: 1. cin tratează un spațiu alb, adică " ", " \ t ", " \ n " ca caracter delimitator.

2. Când citiți ceva de pe dispozitivul de intrare standard, tastatura aici, acesta intră mai întâi în buffer de intrare. Bufferul de intrare este o locație care deține toate informațiile primite înainte de acesta continuă până la procesor pentru procesare.

Problema: 1. Să presupunem că doriți să citiți un „șir” de la utilizator. char myname [10];

2. Cumva ajungi să folosești cin, în loc de cin.getline () cin >> numele meu;

3. Scriu „ABC”, apoi apăs tasta Enter. preia ABC și tratează următorul "\ n" ca delimetru.Ca rezultat, „\ n” nu este citit și rămâne în tampon de intrare.

4. Așadar, cin.ignore () va ignora aceste caractere necitite care au rămas în bufferul de intrare.

Soluția: Dacă doriți să evitați situațiile, trebuie doar să aveți în vedere să nu utilizați cin pentru a introduce șiruri. și tada, problema rezolvată !!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *