Beste svaret
cin.getline () lar deg skrive inn en streng som har hvite mellomrom også. Syntaksen er som følger: cin.getline (navn på streng, strengens størrelse); Tenk på følgende eksempel: Anta at jeg går inn i Hello World for både str og strr. # inkluderer
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;
}
Dette er den grunnleggende forskjellen. cin tar ikke hensyn til de hvite mellomrom i strengen, mens cin.getline vurderer.
Svar
Dette er et av de vanligste problemene studentene generelt møter når de bruker getline () funksjon.
Når du kjører programmet, skriver du Delhi og trykker deretter på Enter-tasten. Denne enter-nøkkelen er ikke annet enn newline-tegnet. Hvite mellomromstegn, for eksempel tabulatorplass og \ n, ignoreres (hoppes over) når du skriver inn verdi ved hjelp av cin.
Vanligvis blir ekstra tegn igjen i inngangsstrømmen etter at inngangen er angivelig fullført. De sendes deretter videre til neste inngangsoperasjon, selv om de ikke er ment for det. Ofte er det en nylinjekarakter som blir liggende igjen, men noen ganger er også andre tegn til overs.
I programmet ditt fungerer denne nye linjekarakteren som input til getline () -funksjonen. Siden denne funksjonen fikk innspill, lar den deg ikke skrive inn verdien. Du må kvitte deg med dette tegnet, og da vil programmet ditt fungere helt fint.
For å kvitte deg med disse fremmede tegnene, ignorere (MAX, DELIM) medlemsfunksjonen til istream-klassen brukes. Den leser og kaster opptil MAX tegn, inkludert det angitte skilletegnet. Bruk denne funksjonen før du ringer til getline () -funksjonen som:
cin.ignore (1, "\ n");
Siden ekstra tegn kan inneholde hvite mellomrom også (for eksempel etter å ha skrevet Delhi , legger du litt mellomrom og trykker deretter på enter-tasten), i stedet for 1 ville det være tryggere å bruke 10.
cin.ignore (10, "\ n");
Ikke bekymre deg for istream-klasse. Det er erklært i IOSTREAM topptekstfil. Videre , getline () er også en medlemsfunksjon i selve istream-klassen.