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.