logo

getline (reťazec) v C++

Jazyk C++ getline() je štandardná knižničná funkcia, ktorá sa používa na čítanie reťazca alebo riadku zo vstupného toku. Je súčasťou hlavička . Funkcia getline() extrahuje znaky zo vstupného toku a pripája ich k objektu typu string, kým nenájdete oddeľovací znak. Pritom predtým uloženú hodnotu v objekte reťazca str bude nahradený vstupným reťazcom, ak existuje.
Funkcia getline() môže byť reprezentovaná dvoma spôsobmi:

Syntax:

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

2. Parametre:



  • je: Je to objekt triedy istream a hovorí funkcii o prúde, odkiaľ má čítať vstup.
  • str: Ide o reťazcový objekt, do tohto objektu sa po načítaní zo streamu uloží vstup.
  • zdieľam: Je to oddeľovací znak, ktorý hovorí funkcii, aby po dosiahnutí tohto znaku zastavila čítanie ďalšieho vstupu.

Príklad: Na demonštráciu použitia oddeľovača v getline() funkciu.

C++




vytvorte spustiteľný skript sh

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

>

>

Výkon:

Výkon

Poznámka: Vo vyššie uvedenom príklade, ak #define MAX_NAME_LEN 6, Takže v tomto prípade, ak prekročíte definovaný limit, potom , v tomto prípade, váš program zastaví vykonávanie a ukončí ho uplatniteľné pre každé makro, ktoré ste použili s funkciou getline(). A budete dostať a výstup ako nižšie:

C++


java dizajnové vzory



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

>

>

Výkon:

Výstup_2

Tu je pochopiteľné, že dĺžka poľa názvu bola väčšia ako definovaný limit, preto sa program zastaví a skončí.

java tutoriál

1. Syntax:

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

2. Druhé vyhlásenie je takmer rovnaké ako to prvé. Jediný rozdiel je v tom, že tieto majú oddeľovací znak, ktorý je štandardne znakom nového riadku ( ).
Parametre:

  • je: Je to objekt triedy istream a hovorí funkcii o prúde, odkiaľ má čítať vstup.
  • str: Ide o reťazcový objekt, do tohto objektu sa po načítaní zo streamu uloží vstup.

Nižšie uvedený program demonštruje fungovanie funkcie getline().
Príklad 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;> }>

>

>

Vstup:

Harsh Agarwal>

Výkon:

Hello, Harsh Agarwal welcome to GfG!>

Príklad 2: Na rozdelenie vety na základe znaku môžeme použiť funkciu getline(). Pozrime sa na príklad, aby sme pochopili, ako to možno urobiť.

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

inštalácia baterky
>

>

Vstup:

Hello, Faisal Al Mamun. Welcome to GfG!>

Výkon:

Hello, Faisal Al Mamun. Welcome to GfG!>

Pozor: Táto funkcia považuje za oddeľovací znak nový riadok alebo znak (' '). znak nového riadku je platným vstupom pre túto funkciu.
Príklad toho, ako môže nový riadok spôsobiť problém, je uvedený nižšie:
Príklad:

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

ako sa vymaniť zo slučky while java

>

>

Vstup:

7 MOHIT KUMAR>

Výkon:

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

Súvisiace články:

  • Ako použiť getline() v C++, keď sú na vstupe prázdne riadky?
  • funkcia getline() a pole znakov

Ak sa vám páči techcodeview.com a chceli by ste prispieť, môžete tiež napísať článok pomocou alebo pošlite svoj článok na [email protected]
Prosím, napíšte komentáre, ak nájdete niečo nesprávne, alebo sa chcete podeliť o viac informácií o téme diskutovanej vyššie.