Cel mai bun răspuns
cin.getline () vă permite să introduceți un șir care are și spații albe. Sintaxa sa este următoarea: cin.getline (numele șirului, dimensiunea șirului); Luați în considerare următorul exemplu: Să presupunem că intru Hello World atât pentru str, cât și pentru strr. #include
int main()
{
char str[100]", strr[100];
cout<<"Enter the strings : ";
cin.getline( str, 100 ); //enter Hello World
cin>>strr; //enter Hello Word.
cout<
cout<
return 0;
}
Aceasta este diferența de bază. cin nu ia în considerare spațiile albe din șir, în timp ce cin.getline ia în considerare.
Răspuns
Aceasta este una dintre cele mai frecvente probleme cu care se confruntă în general elevii în timpul utilizării getline () funcție.
În momentul în care rulați programul, tastați Delhi și apoi apăsați tasta Enter. Această cheie de introducere nu este altceva decât caracterul newline. Caracterele spațiului alb, cum ar fi spațiul tabului și „\ n”, sunt în mod normal ignorate (omise) la introducerea valorii folosind cin.
De obicei, caracterele suplimentare sunt lăsate în fluxul de intrare după ce intrarea este presupus finalizat. Acestea sunt apoi transmise la următoarea operație de intrare, chiar dacă nu sunt destinate pentru aceasta. Adesea este un personaj de linie nouă care rămâne în urmă, dar uneori sunt lăsate și alte caractere.
În programul dvs., acest caracter de linie nouă servește ca intrare pentru funcția getline (). Deoarece această funcție a intrat, nu vă permite să introduceți valoarea. Trebuie să scăpați de acest caracter și atunci programul dvs. va funcționa absolut bine.
Pentru a scăpa de aceste caractere străine, ignore (MAX, DELIM) este utilizată funcția membru a clasei istream. Citește și aruncă până la MAX caractere, inclusiv caracterul delimitator specificat. Utilizați această funcție înainte de a apela funcția getline () ca:
cin.ignore (1, "\ n");
Deoarece, caracterele suplimentare pot include și spațiu alb (de exemplu, după ce tastați Delhi , puneți puțin spațiu și apoi apăsați tasta Enter), în loc de 1 ar fi mai sigur să folosiți 10.
cin.ignore (10, "\ n");
Nu vă faceți griji cu privire la clasa istream. Este declarat în fișierul antet IOSTREAM. Mai mult , getline () este, de asemenea, o funcție membră a clasei istream în sine.