Beste antwoord
cin.getline () stelt je in staat een string in te voeren die heeft ook witruimtes. De syntaxis is als volgt: cin.getline (naam van de string, grootte van de string); Beschouw het volgende voorbeeld: Stel dat ik Hallo wereld invoert voor zowel str als 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;
}
Dit is het fundamentele verschil. cin houdt geen rekening met de witruimtes in de string, terwijl cin.getline wel rekening houdt met.
Antwoord
Dit is een van de meest voorkomende problemen waarmee studenten in het algemeen worden geconfronteerd bij het gebruik van getline () functie.
Op het moment dat u uw programma start, typt u Delhi en drukt u op de Enter-toets. Deze enter-toets is niets anders dan het newline-teken. Witruimte-tekens, zoals tabruimte en \ n, worden normaal gesproken genegeerd (overgeslagen) bij het invoeren van waarde met cin.
Doorgaans blijven er extra tekens in de invoerstroom nadat de invoer is zogenaamd voltooid. Ze worden dan doorgegeven aan de volgende invoerbewerking, ook al zijn ze er niet voor bedoeld. Vaak is het een teken voor een nieuwe regel dat achterblijft, maar soms blijven er ook andere tekens over.
In uw programma dient dit teken voor een nieuwe regel als invoer voor de functie getline (). Aangezien deze functie zijn invoer heeft gekregen, staat het je niet toe om de waarde in te voeren. Je moet dit teken verwijderen en dan zal je programma absoluut prima werken.
Om van deze vreemde tekens af te komen, negeren (MAX, DELIM) lidfunctie van istream klasse wordt gebruikt. Het leest en gooit maximaal MAX tekens weg, inclusief het opgegeven scheidingsteken. Gebruik deze functie voordat u de functie getline () aanroept als:
cin.ignore (1, "\ n");
Aangezien de extra tekens ook spaties kunnen bevatten (bijvoorbeeld, na het typen van Delhi , voegt u wat spatie toe en drukt u vervolgens op de Enter-toets), in plaats van 1 zou het veiliger zijn om 10 te gebruiken.
cin.ignore (10, "\ n");
Maak je geen zorgen over istream-klasse. Het wordt gedeclareerd in het IOSTREAM-headerbestand. Bovendien , getline () is ook een lidfunctie van de klasse istream zelf.