getline (string) w C++

getline (string) w C++

Język C++ getline() to standardowa funkcja biblioteczna używana do odczytu ciągu znaków lub linii ze strumienia wejściowego. Jest częścią nagłówek . Funkcja getline() wyodrębnia znaki ze strumienia wejściowego i dołącza je do obiektu string do momentu napotkania znaku ograniczającego. Robiąc to, poprzednio zapisana wartość w obiekcie string ul zostanie zastąpiony ciągiem wejściowym, jeśli taki istnieje.
Funkcję getline() można przedstawić na dwa sposoby:

Składnia:

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

2. Parametry:

  • Jest: Jest obiektem klasy istream i informuje funkcję o strumieniu, z którego ma odczytać dane wejściowe.
  • str: Jest to obiekt typu string, w tym obiekcie zapisywane są dane wejściowe po odczytaniu ze strumienia.
  • udział: Jest to znak ograniczający, który informuje funkcję, aby po osiągnięciu tego znaku przestała czytać dalsze dane wejściowe.

Przykład: Aby zademonstrować użycie ogranicznika w getline() funkcjonować.

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

Wyjście:

Wyjście

Notatka: W powyższym przykładzie, jeśli #zdefiniuj MAX_NAME_LEN 6, Zatem w tym przypadku, jeśli przekroczysz zdefiniowany limit , w tym przypadku, Twój program zatrzyma wykonywanie i zakończy działanie odpowiedni dla każdego makra użytego z funkcją getline(). I zrobisz to Dostawać the wyjście jak poniżej:

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

Wyjście:

Wyjście_2

Tutaj zrozumiałe jest, że długość pola nazwy była większa niż zdefiniowany limit, dlatego program zatrzymuje wykonywanie i kończy działanie.

1. Składnia:

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

2. Druga deklaracja jest prawie taka sama jak pierwsza. Jedyna różnica polega na tym, że te ostatnie mają znak ograniczający, który jest domyślnie znakiem nowej linii ( ).
Parametry:

  • Jest: Jest obiektem klasy istream i informuje funkcję o strumieniu, z którego ma odczytać dane wejściowe.
  • str: Jest to obiekt typu string, w tym obiekcie zapisywane są dane wejściowe po odczytaniu ze strumienia.

Poniższy program demonstruje działanie funkcji getline().
Przykład 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;> }>

Wejście:

Harsh Agarwal 

Wyjście:

Hello, Harsh Agarwal welcome to GfG! 

Przykład 2: Możemy użyć funkcji getline(), aby podzielić zdanie na podstawie znaku. Spójrzmy na przykład, aby zrozumieć, jak można to zrobić.

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

Wejście:

Hello, Faisal Al Mamun. Welcome to GfG! 

Wyjście:

Hello, Faisal Al Mamun. Welcome to GfG! 

Ostrożność : Ta funkcja traktuje znak nowej linii lub znak („ ”) jako znak rozgraniczenia i Znak nowego wiersza jest prawidłowym wejściem dla tej funkcji.
Przykład tego, jak nowa linia może powodować problemy, podano poniżej:
Przykład:

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

Wejście:

7 MOHIT KUMAR 

Wyjście:

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

Powiązane artykuły:

  • Jak używać getline() w C++, gdy na wejściu znajdują się puste linie?
  • funkcja getline() i tablica znaków

Jeśli podoba Ci się techcodeview.com i chciałbyś wnieść swój wkład, możesz także napisać artykuł za pomocą lub wyślij swój artykuł na adres [email protected]
Napisz komentarz, jeśli znajdziesz coś nieprawidłowego lub chcesz podzielić się więcej informacjami na temat omówiony powyżej.