logo

getline (cadena) en C++

El C++ getline() és una funció de biblioteca estàndard que s'utilitza per llegir una cadena o una línia d'un flux d'entrada. És una part del capçalera . La funció getline() extreu caràcters del flux d'entrada i els afegeix a l'objecte cadena fins que es troba el caràcter delimitador. Mentre ho feu, el valor emmagatzemat anteriorment a l'objecte de cadena str se substituirà per la cadena d'entrada si n'hi ha.
La funció getline() es pot representar de dues maneres:

Sintaxi:

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

2. Paràmetres:



  • és: És un objecte de la classe istream i indica a la funció sobre el flux des d'on llegir l'entrada.
  • str: És un objecte de cadena, l'entrada s'emmagatzema en aquest objecte després de llegir-se des del flux.
  • Compartir: És el caràcter de delimitació que indica a la funció que deixi de llegir més entrades després d'arribar a aquest caràcter.

Exemple: Per demostrar l'ús del delimitador en el getline() funció.

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

>

>

Sortida:

Sortida

Nota: A l'exemple anterior si el #define MAX_NAME_LEN 6, Per tant, en aquest cas, si creueu el límit definit, aleshores , en aquest cas, el vostre programa aturarà l'execució i sortirà aplicable per a cada macro que heu utilitzat amb la funció getline(). I ho faràs aconseguir el sortida com a continuació:

C++




convertir int en java doble
#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;> }>

>

>

Sortida:

Sortida_2n

Aquí, és comprensible que la longitud del camp de nom fos superior al límit definit, per això el programa atura l'execució i surt.

1. Sintaxi:

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

2. La segona declaració és gairebé la mateixa que la de la primera. L'única diferència és que aquests últims tenen un caràcter de delimitació que és per defecte un caràcter de nova línia ( ).
Paràmetres:

  • és: És un objecte de la classe istream i indica a la funció sobre el flux des d'on llegir l'entrada.
  • str: És un objecte de cadena, l'entrada s'emmagatzema en aquest objecte després de llegir-se des del flux.

El programa següent mostra el funcionament de la funció getline().
Exemple 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;> }>

>

>

Entrada:

Harsh Agarwal>

Sortida:

mètode de cadena a java
Hello, Harsh Agarwal welcome to GfG!>

Exemple 2: Podem utilitzar la funció getline() per dividir una frase sobre la base d'un caràcter. Vegem un exemple per entendre com es pot fer.

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

convertir la cadena a data

>

>

Entrada:

Hello, Faisal Al Mamun. Welcome to GfG!>

Sortida:

Hello, Faisal Al Mamun. Welcome to GfG!>

Precaució: Aquesta funció considera una nova línia o caràcter (' ') com a caràcter de delimitació i El caràcter de línia nova és una entrada vàlida per a aquesta funció.
A continuació es mostra un exemple de com la nova línia pot causar problemes:
Exemple:

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

>

>

Entrada:

7 MOHIT KUMAR>

Sortida:

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

Articles relacionats:

  • Com utilitzar getline() en C++ quan hi ha línies en blanc a l'entrada?
  • funció getline() i matriu de caràcters

Si t'agrada techcodeview.com i vols contribuir, també pots escriure un article utilitzant o envia el teu article a [email protected]
Si us plau, escriviu comentaris si trobeu alguna cosa incorrecta o voleu compartir més informació sobre el tema tractat anteriorment.