logo

getline (sträng) i C++

C++ getline() är en standardbiblioteksfunktion som används för att läsa en sträng eller en rad från en indataström. Det är en del av rubrik . Funktionen getline() extraherar tecken från indataströmmen och lägger till den i strängobjektet tills det avgränsande tecknet påträffas. Medan du gör det det tidigare lagrade värdet i strängobjektet str kommer att ersättas av inmatningssträngen om någon.
Funktionen getline() kan representeras på två sätt:

Syntax:

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

2. Parametrar:



  • är: Det är ett objekt av istream-klassen och berättar för funktionen om strömmen varifrån indata ska läsas.
  • str: Det är ett strängobjekt, indata lagras i detta objekt efter att ha lästs från strömmen.
  • dela med sig: Det är avgränsningstecknet som talar om för funktionen att sluta läsa ytterligare inmatning efter att ha nått detta tecken.

Exempel: För att demonstrera användningen av avgränsare i getline() fungera.

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;> }>

>

>

Produktion:

Produktion

Notera: I exemplet ovan om #define MAX_NAME_LEN 6, Så i det här fallet om du passerar den definierade gränsen då , I detta fall, ditt program kommer att stoppa körningen och avsluta det tillämplig för varje makro som du har använt med funktionen getline(). Och det kommer du skaffa sig de utdata enligt nedan:

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;> }>

>

>

Produktion:

Output_2:a

Här är det förståeligt att längden på namnfältet var mer än den definierade gränsen, det är därför programmet stoppar körningen och avslutar.

1. Syntax:

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

2. Den andra förklaringen är nästan densamma som den första. Den enda skillnaden är att de senare har ett avgränsningstecken som som standard är newline( )tecken.
Parametrar:

  • är: Det är ett objekt av istream-klassen och berättar för funktionen om strömmen varifrån indata ska läsas.
  • str: Det är ett strängobjekt, indata lagras i detta objekt efter att ha lästs från strömmen.

Nedanstående program visar hur getline()-funktionen fungerar
Exempel 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;> }>

>

>

Inmatning:

vänster sammanfogning vs höger sammanfogning
Harsh Agarwal>

Produktion:

Hello, Harsh Agarwal welcome to GfG!>

Exempel 2: Vi kan använda funktionen getline() för att dela en mening på basis av ett tecken. Låt oss titta på ett exempel för att förstå hur det kan göras.

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;> }>

>

>

Inmatning:

Hello, Faisal Al Mamun. Welcome to GfG!>

Produktion:

Hello, Faisal Al Mamun. Welcome to GfG!>

Varning : Den här funktionen betraktar en ny rad eller (' ') tecken som avgränsningstecken och ny rad tecken är giltig inmatning för denna funktion.
Exempel på hur ny linje kan orsaka problem ges nedan:
Exempel:

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;> }>

>

>

Inmatning:

7 MOHIT KUMAR>

Produktion:

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

Relaterade artiklar:

  • Hur använder man getline() i C++ när det finns tomma rader i inmatningen?
  • getline() funktion och teckenmatris

Om du gillar techcodeview.com och vill bidra kan du också skriva en artikel med hjälp av eller maila din artikel till [email protected]
Skriv kommentarer om du hittar något felaktigt, eller om du vill dela mer information om ämnet som diskuterats ovan.