logo

getline (șir) în C++

C++ getline() este o funcție standard de bibliotecă care este utilizată pentru a citi un șir sau o linie dintr-un flux de intrare. Este o parte a antet . Funcția getline() extrage caractere din fluxul de intrare și le adaugă obiectului șir până când este întâlnit caracterul de delimitare. În timp ce faceți acest lucru, valoarea stocată anterior în obiectul șir str va fi înlocuit cu șirul de intrare, dacă există.
Funcția getline() poate fi reprezentată în două moduri:

Sintaxă:

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

2. Parametri:



  • este: Este un obiect al clasei istream și spune funcției despre fluxul de unde să citească intrarea.
  • str: Este un obiect șir, intrarea este stocată în acest obiect după ce a fost citită din flux.
  • acțiune: Este caracterul de delimitare care îi spune funcției să nu mai citească introducerea ulterioară după ce ajunge la acest caracter.

Exemplu: Pentru a demonstra utilizarea delimitatorului în getline() funcţie.

C++


exemplu de arbore binar de căutare



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

>

>

Ieșire:

Ieșire

java cast șir la int

Notă: În exemplul de mai sus, dacă #define MAX_NAME_LEN 6, Deci, în acest caz, dacă depășiți limita definită atunci , în acest caz, programul tău va opri execuția și va ieși din el aplicabil pentru fiecare macrocomandă pe care ați folosit-o cu funcția getline(). Și vei obține cel ieșire după cum urmează:

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

>

>

Ieșire:

Ieșire_2nd

sigla java

Aici, este de înțeles că lungimea câmpului de nume a fost mai mare decât limita definită, de aceea programul oprește execuția și iese.

1. Sintaxă:

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

2. A doua declarație este aproape aceeași cu cea a primei. Singura diferență este că acestea din urmă au un caracter de delimitare care este în mod implicit caracter newline( ).
Parametri:

  • este: Este un obiect al clasei istream și spune funcției despre fluxul de unde să citească intrarea.
  • str: Este un obiect șir, intrarea este stocată în acest obiect după ce a fost citită din flux.

Programul de mai jos demonstrează funcționarea funcției getline().
Exemplul 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;> }>

>

>

Intrare:

Harsh Agarwal>

Ieșire:

Hello, Harsh Agarwal welcome to GfG!>

Exemplul 2: Putem folosi funcția getline() pentru a împărți o propoziție pe baza unui caracter. Să ne uităm la un exemplu pentru a înțelege cum se poate face.

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

controlul programului stocat

>

>

Intrare:

Hello, Faisal Al Mamun. Welcome to GfG!>

Ieșire:

Hello, Faisal Al Mamun. Welcome to GfG!>

Prudență : Această funcție consideră o linie nouă sau un caracter (‘ ’) drept caracter de delimitare și caracterul de linie nouă este introdus valid pentru această funcție.
Mai jos este prezentat un exemplu despre modul în care linia nouă poate cauza probleme:
Exemplu:

CPP




comandă autocad de linie
// 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;> }>

>

>

Intrare:

7 MOHIT KUMAR>

Ieșire:

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

Articole similare:

  • Cum se utilizează getline() în C++ când există linii goale în intrare?
  • funcția getline() și matricea de caractere

Dacă vă place techcodeview.com și doriți să contribui, puteți scrie și un articol folosind sau trimiteți-vă articolul la [email protected]
Vă rugăm să scrieți comentarii dacă găsiți ceva incorect sau doriți să împărtășiți mai multe informații despre subiectul discutat mai sus.