Was macht cin.getline in C ++?


Beste Antwort

Mit cin.getline () können Sie eine Zeichenfolge eingeben, die hat auch Leerzeichen. Die Syntax lautet wie folgt: cin.getline (Name der Zeichenfolge, Größe der Zeichenfolge); Betrachten Sie das folgende Beispiel: Angenommen, ich gebe Hello World sowohl für str als auch für strr ein. #include using namespace 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;

}

Dies ist der grundlegende Unterschied. cin berücksichtigt die Leerzeichen in der Zeichenfolge nicht, während cin.getline dies berücksichtigt.

Antwort

Dies ist eines der häufigsten Probleme, mit denen Schüler bei der Verwendung von getline () konfrontiert sind. Funktion.

Wenn Sie Ihr Programm ausführen, geben Sie Delhi ein und drücken die Eingabetaste. Diese Eingabetaste ist nichts anderes als das Zeilenumbruchzeichen . Leerzeichen wie Tabulator und \ n werden normalerweise bei der Eingabe von Werten mit cin ignoriert (übersprungen).

In der Regel verbleiben nach der Eingabe zusätzliche Zeichen im Eingabestream angeblich abgeschlossen. Sie werden dann an die nächste Eingabeoperation weitergeleitet, obwohl sie nicht dafür vorgesehen sind. Oft bleibt ein Zeilenumbruchzeichen zurück, aber manchmal bleiben auch andere Zeichen übrig.

In Ihrem Programm dient dieses Zeilenumbruchzeichen als Eingabe für die Funktion getline (). Da diese Funktion ihre Eingabe erhalten hat, können Sie den Wert nicht eingeben. Sie müssen dieses Zeichen entfernen, und dann funktioniert Ihr Programm einwandfrei.

Um diese überflüssigen Zeichen zu entfernen, müssen Sie die Ignorieren (MAX, DELIM) Die Mitgliedsfunktion der istream-Klasse wird verwendet. Es liest und wirft bis zu MAX Zeichen, einschließlich des angegebenen Trennzeichens. Verwenden Sie diese Funktion, bevor Sie die Funktion getline () aufrufen als:

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

Da die zusätzlichen Zeichen auch Leerzeichen enthalten können (nachdem Sie beispielsweise Delhi eingegeben haben, geben Sie etwas Leerzeichen ein und drücken dann die Eingabetaste), anstelle von 1 wäre es sicherer, 10 zu verwenden.

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

Machen Sie sich keine Sorgen um die istream-Klasse. Sie wird in der IOSTREAM-Header-Datei deklariert , getline () ist auch eine Mitgliedsfunktion der istream-Klasse selbst.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.