getline (merkkijono) C++:ssa

getline (merkkijono) C++:ssa

C++ getline() on standardikirjastofunktio, jota käytetään lukemaan merkkijono tai rivi syöttövirrasta. Se on osa otsikko . Getline()-funktio poimii merkit syöttövirrasta ja lisää sen merkkijonoobjektiin, kunnes rajaava merkki löytyy. Tällöin merkkijonoobjektiin aiemmin tallennettu arvo str korvataan syötemerkkijonolla, jos sellainen on.
Getline()-funktio voidaan esittää kahdella tavalla:

Syntaksi:

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

2. Parametrit:

  • On: Se on istream-luokan objekti ja kertoo virran funktiolle, mistä syöte luetaan.
  • str: Se on merkkijonoobjekti, syöte tallennetaan tähän objektiin, kun se on luettu virrasta.
  • Jaa: Se on rajausmerkki, joka käskee funktiota lopettamaan lisäsyötteen lukemisen tämän merkin saavuttamisen jälkeen.

Esimerkki: Havainnollistaa erottimen käyttöä getline() toiminto.

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

Lähtö:

Lähtö

Huomautus: Yllä olevassa esimerkissä, jos #define MAX_NAME_LEN 6, Joten tässä tapauksessa jos ylität määritellyn rajan , tässä tapauksessa, ohjelmasi lopettaa suorituksen ja lopettaa sen sovellettavissa jokaiselle makrolle, jota olet käyttänyt getline()-funktion kanssa. Ja sinä tulet saada the tulostus alla:

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

Lähtö:

Output_2nd

Tässä on ymmärrettävää, että nimikentän pituus ylitti määritellyn rajan, minkä vuoksi ohjelma pysäyttää suorituksen ja poistuu.

1. Syntaksi:

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

2. Toinen ilmoitus on lähes sama kuin ensimmäinen. Ainoa ero on, että jälkimmäisissä on rajausmerkki, joka on oletusarvoisesti rivinvaihtomerkki ( ).
Parametrit:

  • On: Se on istream-luokan objekti ja kertoo virran funktiolle, mistä syöte luetaan.
  • str: Se on merkkijonoobjekti, syöte tallennetaan tähän objektiin, kun se on luettu virrasta.

Alla oleva ohjelma näyttää getline()-funktion toiminnan
Esimerkki 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;> }>

Syöte:

Harsh Agarwal 

Lähtö:

Hello, Harsh Agarwal welcome to GfG! 

Esimerkki 2: Voimme käyttää getline()-funktiota lauseen jakamiseen merkin perusteella. Katsotaanpa esimerkkiä ymmärtääksemme, kuinka se voidaan tehdä.

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

Syöte:

Hello, Faisal Al Mamun. Welcome to GfG! 

Lähtö:

Hello, Faisal Al Mamun. Welcome to GfG! 

Varoitus: Tämä toiminto pitää uuden rivin tai (' ') merkin rajausmerkkinä ja uusi rivimerkki on kelvollinen syöte tälle funktiolle.
Alla on esimerkki siitä, kuinka uusi rivi voi aiheuttaa ongelmia:
Esimerkki:

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

Syöte:

7 MOHIT KUMAR 

Lähtö:

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

Aiheeseen liittyvät artikkelit:

  • Kuinka käyttää getline():tä C++:ssa, kun syötteessä on tyhjiä rivejä?
  • getline()-funktio ja merkkijono

Jos pidät techcodeview.comsta ja haluat osallistua, voit myös kirjoittaa artikkelin käyttämällä tai lähetä artikkelisi osoitteeseen [email protected]
Kirjoita kommentteja, jos huomaat jotain väärin tai haluat jakaa lisätietoja yllä käsitellystä aiheesta.