getline (tekenreeks) in C++

getline (tekenreeks) in C++

De C++ getline() is een standaardbibliotheekfunctie die wordt gebruikt om een ​​string of regel uit een invoerstroom te lezen. Het is een onderdeel van de koptekst . De functie getline() extraheert tekens uit de invoerstroom en voegt deze toe aan het stringobject totdat het scheidingsteken wordt aangetroffen. Terwijl u dit doet, wordt de eerder opgeslagen waarde in het stringobject weergegeven str wordt vervangen door de invoerreeks, indien aanwezig.
De functie getline() kan op twee manieren worden weergegeven:

Syntaxis:

istream& getline(istream& is,   string& str, char delim); 

2. Parameters:

  • is: Het is een object van de istream-klasse en vertelt de functie over de stream waarvandaan de invoer moet worden gelezen.
  • str: Het is een stringobject, de invoer wordt in dit object opgeslagen nadat het uit de stream is gelezen.
  • deel: Het is het scheidingsteken dat de functie vertelt om te stoppen met het lezen van verdere invoer nadat dit teken is bereikt.

Voorbeeld: Om het gebruik van een scheidingsteken in de getline() functie.

C++




#include> #include> using> namespace> std;> //macro definitions> #define MAX_NAME_LEN 60 // Maximum len of your name can't be more than 60> #define MAX_ADDRESS_LEN 120 // Maximum len of your address can't be more than 120> #define MAX_ABOUT_LEN 250 // Maximum len of your profession can't be more than 250> int> main () {> > char> y_name[MAX_NAME_LEN], y_address[MAX_ADDRESS_LEN], about_y[MAX_ABOUT_LEN];> > cout < <> 'Enter your name: '> ;> > cin.getline (y_name, MAX_NAME_LEN);> > cout < <> 'Enter your City: '> ;> > cin.getline (y_address, MAX_ADDRESS_LEN);> > cout < <> 'Enter your profession (press $ to complete): '> ;> > cin.getline (about_y, MAX_ABOUT_LEN,> '$'> );> //$ is a delimiter> > cout < <> ' Entered details are: '> < <> ' '> ;> > cout < <> 'Name: '> < < y_name < < endl;> > cout < <> 'Address: '> < < y_address < < endl;> > cout < <> 'Profession is: '> < < about_y < < endl;> }>

Uitgang:

Uitvoer

Opmerking: In het bovenstaande voorbeeld als de #define MAX_NAME_LEN 6, Dus in dit geval als u de gedefinieerde limiet overschrijdt , in dit geval, uw programma stopt met de uitvoering en sluit het af van toepassing voor elke macro die u hebt gebruikt met de functie getline(). En dat zul je ook doen krijgen de uitvoer zoals hieronder:

C++




#include> #include> using> namespace> std;> //macro definitions> #define MAX_NAME_LEN 6 // Maximum length of your name can't be more than 6> #define MAX_ADDRESS_LEN 120 // Maximum length of your address can't be more than 120> #define MAX_ABOUT_LEN 250 // Maximum length of your profession can't be more than 250> int> main () {> > char> y_name[MAX_NAME_LEN], y_address[MAX_ADDRESS_LEN], about_y[MAX_ABOUT_LEN];> > cout < <> 'Enter your name: '> ;> > cin.getline (y_name, MAX_NAME_LEN);> > cout < <> 'Enter your City: '> ;> > cin.getline (y_address, MAX_ADDRESS_LEN);> > cout < <> 'Enter your profession (press $ to complete): '> ;> > cin.getline (about_y, MAX_ABOUT_LEN,> '$'> );> //$ is a delimiter> > cout < <> ' Entered details are: '> ;> > cout < <> 'Name: '> < < y_name < < endl;> > cout < <> 'Address: '> < < y_address < < endl;> > cout < <> 'Profession is: '> < < about_y < < endl;> }>

Uitgang:

Uitgang_2e

Hier is het begrijpelijk dat de lengte van het naamveld groter was dan de gedefinieerde limiet. Daarom stopte het programma met de uitvoering en werd het afgesloten.

1. Syntaxis:

istream& getline (istream& is, string& str); 

2. De tweede verklaring is vrijwel dezelfde als die van de eerste. Het enige verschil is dat deze laatste een scheidingsteken hebben, dat standaard een newline( )-teken is.
Parameters:

  • is: Het is een object van de istream-klasse en vertelt de functie over de stream waarvandaan de invoer moet worden gelezen.
  • str: Het is een stringobject, de invoer wordt in dit object opgeslagen nadat het uit de stream is gelezen.

Het onderstaande programma demonstreert de werking van de functie getline().
Voorbeeld 1:

CPP




// C++ program to demonstrate getline() function> #include> #include> using> namespace> std;> int> main()> {> > string str;> > cout < <> 'Please enter your name: '> ;> > getline(cin, str);> > cout < <> 'Hello, '> < < str> > < <> ' welcome to GfG ! '> ;> > return> 0;> }>

Invoer:

Harsh Agarwal 

Uitgang:

Hello, Harsh Agarwal welcome to GfG! 

Voorbeeld 2: We kunnen de functie getline() gebruiken om een ​​zin op basis van een teken te splitsen. Laten we een voorbeeld bekijken om te begrijpen hoe dit kan worden gedaan.

CPP




// C++ program to understand the use of getline() function> #include> using> namespace> std;> int> main()> {> > string S, T;> > getline(cin, S);> > stringstream X(S);> > while> (getline(X, T,> ' '> )) {> > cout < < T < < endl;> > }> > return> 0;> }>

Invoer:

Hello, Faisal Al Mamun. Welcome to GfG! 

Uitgang:

Hello, Faisal Al Mamun. Welcome to GfG! 

Voorzichtigheid : Deze functie beschouwt een nieuw regel- of (‘ ’)-teken als het scheidingsteken en nieuw regelteken is geldige invoer voor deze functie.
Hieronder wordt een voorbeeld gegeven van hoe een nieuwe regel problemen kan veroorzaken:
Voorbeeld:

CPP




// C++ program to demonstrate> // anomaly of delimitation of> // getline() function> #include> #include> using> namespace> std;> int> main()> {> > string name;> > int> id;> > // Taking id as input> > cout < <> 'Please enter your id: '> ;> > cin>>id;> > // Takes the empty character as input> > cout < <> 'Please enter your name: '> ;> > getline(cin, name);> > // Prints id> > cout < <> 'Your id : '> < < id < <> ' '> ;> > // Prints nothing in name field> > // as ' ' is considered a valid string> > cout < <> 'Hello, '> < < name> > < <> ' welcome to GfG ! '> ;> > // Again Taking string as input> > getline(cin, name);> > // This actually prints the name> > cout < <> 'Hello, '> < < name> > < <> ' welcome to GfG ! '> ;> > return> 0;> }>

Invoer:

7 MOHIT KUMAR 

Uitgang:

Your id : 7 Hello, welcome to GfG ! Hello, MOHIT KUMAR welcome to GfG ! 

Gerelateerde artikelen:

  • Hoe gebruik ik getline() in C++ als er lege regels in de invoer staan?
  • getline() functie en karakterarray

Als u techcodeview.com leuk vindt en een bijdrage wilt leveren, kunt u ook een artikel schrijven met of mail uw artikel naar [email protected]
Schrijf opmerkingen als u iets onjuist vindt, of als u meer informatie wilt delen over het hierboven besproken onderwerp.