Vad gör cin.getline i C ++?


Bästa svaret

cin.getline () låter dig ange en sträng som har också vita utrymmen. Dess syntax är som följer: cin.getline (strängens namn, strängens storlek); Tänk på följande exempel: Antag att jag går in i Hello World för både str och strr. # inkludera med namnrymd std;

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;

}

Detta är den grundläggande skillnaden. cin tar inte hänsyn till de vita utrymmena i strängen, medan cin.getline tar hänsyn till.

Svar

Detta är ett av de vanligaste problemen som studenter brukar möta när de använder getline () funktion.

När du kör programmet skriver du Delhi och trycker sedan på Enter. Den här nyckeln är inget annat än newline-tecknet. Mellanslagstecken, såsom flikutrymme och \ n, ignoreras normalt (hoppas över) när de matar in värde med cin.

Vanligtvis lämnas extra tecken kvar i inmatningsströmmen efter att inmatningen är förment fullbordad. De skickas sedan vidare till nästa inmatningsoperation, även om de inte är avsedda för det. Ofta är det en newline-karaktär som förblir, men ibland är andra tecken också kvar.

I ditt program fungerar denna newline-karaktär som input för getline () -funktionen. Eftersom den här funktionen fick sin inmatning låter den dig inte ange värdet. Du måste bli av med denna karaktär och då kommer ditt program att fungera helt bra.

För att bli av med dessa främmande tecken ignorera (MAX, DELIM) medlemsfunktionen i istream-klassen används. Den läser och kastar upp till MAX tecken, inklusive det angivna avgränsningsteckenet. Använd den här funktionen innan du ringer till getline () -funktionen som:

cin.ignore (1, "\ n");

Eftersom de extra tecknen också kan innehålla vitt blanksteg (till exempel efter att du har skrivit Delhi lägger du lite utrymme och trycker sedan på enter-tangenten), istället för 1 skulle det vara säkrare att använda 10.

cin.ignore (10, "\ n");

Oroa dig inte för istream-klass. Det förklaras i IOSTREAM-rubrikfilen. Dessutom , getline () är också en medlemsfunktion i istream-klassen själv.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *