Jazyk C++ getline() je standardní knihovní funkce, která se používá ke čtení řetězce nebo řádku ze vstupního proudu. Je součástí záhlaví . Funkce getline() extrahuje znaky ze vstupního proudu a připojuje je k objektu string, dokud nenarazí na oddělovací znak. Přitom dříve uložená hodnota v objektu string str bude nahrazeno vstupním řetězcem, pokud existuje.
Funkce getline() může být reprezentována dvěma způsoby:
Syntax:
istream& getline(istream& is, string& str, char delim);>
2. Parametry:
- je: Je to objekt třídy istream a říká funkci o proudu, odkud má číst vstup.
- str: Jedná se o objekt typu string, do tohoto objektu se po načtení ze streamu uloží vstup.
- podíl: Je to oddělovací znak, který říká funkci, aby po dosažení tohoto znaku přestala číst další vstup.
Příklad: Demonstrovat použití oddělovače v getline() funkce.
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;> }> |
>
>
Výstup:

Výstup
Poznámka: Pokud ve výše uvedeném příkladu #define MAX_NAME_LEN 6, Takže v tomto případě, pokud překročíte definovaný limit, pak , v tomto případě, váš program zastaví provádění a ukončí jej použitelný pro každé makro, které jste použili s funkcí getline(). A budete dostat a výstup jako níže:
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;> }> |
>
>
Výstup:

Výstup_2
Zde je pochopitelné, že délka pole názvu byla větší než definovaný limit, proto se program zastaví a skončí.
1. Syntaxe:
istream& getline (istream& is, string& str);>
2. Druhá deklarace je téměř stejná jako ta první. Jediný rozdíl je v tom, že ty druhé mají oddělovací znak, který je ve výchozím nastavení znakem nového řádku (
) .
Parametry:
- je: Je to objekt třídy istream a říká funkci o proudu, odkud má číst vstup.
- str: Jedná se o objekt typu string, do tohoto objektu se po načtení ze streamu uloží vstup.
Níže uvedený program demonstruje fungování funkce getline().
Pří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ýstup:
Hello, Harsh Agarwal welcome to GfG!>
Příklad 2: K rozdělení věty na základě znaku můžeme použít funkci getline(). Podívejme se na příklad, abychom pochopili, jak to lze provést.
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;> }> |
>
>
Vstup:
Hello, Faisal Al Mamun. Welcome to GfG!>
Výstup:
Hello, Faisal Al Mamun. Welcome to GfG!>
Pozor: Tato funkce považuje za oddělovací znak nový řádek nebo znak ('
'). znak nového řádku je platným vstupem pro tuto funkci.
Příklad toho, jak může nový řádek způsobit problém, je uveden níže:
Příklad:
CPP
centos vs redhat
// 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;> }> |
>
>
Vstup:
7 MOHIT KUMAR>
Výstup:
Your id : 7 Hello, welcome to GfG ! Hello, MOHIT KUMAR welcome to GfG !>
Související články:
- Jak používat getline() v C++, když jsou na vstupu prázdné řádky?
- funkce getline() a pole znaků
Pokud se vám líbí techcodeview.com a chtěli byste přispět, můžete také napsat článek pomocí nebo pošlete svůj článek na [email protected]
Napište prosím komentáře, pokud zjistíte, že je něco nesprávné, nebo se chcete podělit o více informací o výše uvedeném tématu.