logo

getline (niz) v C++

C++ getline() je standardna knjižnična funkcija, ki se uporablja za branje niza ali vrstice iz vhodnega toka. Je del glava . Funkcija getline() izvleče znake iz vhodnega toka in jih doda objektu niza, dokler ne naleti na ločilni znak. Pri tem predhodno shranjeno vrednost v objektu niza str bo nadomeščen z vhodnim nizom, če obstaja.
Funkcijo getline() lahko predstavimo na dva načina:

Sintaksa:

java char v celo število
istream& getline(istream& is,   string& str, char delim);>

2. Parametri:



  • je: Je objekt razreda istream in pove funkciji o toku, od koder naj bere vhod.
  • str: Je nizovni objekt, vhod je shranjen v tem objektu, potem ko je prebran iz toka.
  • delim: To je razmejitveni znak, ki pove funkciji, naj preneha brati nadaljnji vnos, ko doseže ta znak.

primer: Za prikaz uporabe ločila v getline() funkcijo.

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

>

>

Izhod:

Izhod

Opomba: V zgornjem primeru, če #define MAX_NAME_LEN 6, Torej v tem primeru, če prekoračite določeno mejo, potem , v tem primeru, vaš program bo ustavil izvajanje in zapustil primerno za vsak makro, ki ste ga uporabili s funkcijo getline(). In boš dobiti the izhod kot spodaj:

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

>

>

Izhod:

Izhod_2

Pri tem je razumljivo, da je bila dolžina polja z imenom večja od definirane omejitve, zato se program ustavi z izvajanjem in zapusti.

1. Sintaksa:

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

2. Druga deklaracija je skoraj enaka kot prva. Edina razlika je, da imajo slednji znak za razmejitev, ki je privzeto znak nove vrstice ( ).
Parametri:

  • je: Je objekt razreda istream in pove funkciji o toku, od koder naj bere vhod.
  • str: Je nizovni objekt, vhod je shranjen v tem objektu, potem ko je prebran iz toka.

Spodnji program prikazuje delovanje funkcije getline().
Primer 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;> }>

pretvori char v niz java

>

>

Vnos:

Harsh Agarwal>

Izhod:

Hello, Harsh Agarwal welcome to GfG!>

Primer 2: Funkcijo getline() lahko uporabimo za razdelitev stavka na podlagi znaka. Oglejmo si primer, da razumemo, kako je to mogoče storiti.

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

>

>

Vnos:

Hello, Faisal Al Mamun. Welcome to GfG!>

Izhod:

Hello, Faisal Al Mamun. Welcome to GfG!>

Pozor: Ta funkcija upošteva novo vrstico ali znak (' ') kot razmejitveni znak in znak nove vrstice je veljaven vnos za to funkcijo.
Primer, kako lahko nova vrstica povzroči težave, je podan spodaj:
primer:

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

sortiranje mehurčkov
>

>

Vnos:

7 MOHIT KUMAR>

Izhod:

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

Povezani članki:

  • Kako uporabiti getline() v C++, ko so v vhodu prazne vrstice?
  • funkcijo getline() in niz znakov

Če vam je všeč techcodeview.com in bi radi prispevali, lahko članek napišete tudi z uporabo ali pošljite svoj članek na [email protected]
Prosimo, napišite komentarje, če najdete kar koli nepravilnega ali želite deliti več informacij o zgoraj obravnavani temi.