getline

Функция getline предназначена для ввода данных из потока, например, для ввода данных из консольного окна. Если формально описывать ее функционал, то она извлекает данные из входного потока до строкового разделителя, который не записывается в получившийся массив данных.

В итоге, получается извлечение одной строки и записывание ее в переменную. Сама конструкция getline  выглядит так:

где string – переменная типа char*, в которую запишется строка, streamsize - максимально количество символов, которое может быть записано в строку, и separator – строковый разделитель, показывающий на конец строки. Последний параметр функции можно опустить, тогда будет задан сепаратор по умолчанию - '\n'. Приведем пример работы функции getline  в программе:

Для начала нужно подключить соответствующую библиотеку  iostream для работы с потоками ввода/вывода. Программа записывает 2 предложения, предложение является законченным, только если в конце стоит ’;’ или такой символ не стоит, но длина предложения 256 символов. В функции в качестве потока поставлен вывод с экрана cin, запись идет в str и разделителем является ’;’. После записи предложения выводятся на экран.

Функция getline с типом string

У функции getline есть ещё один популярный вариант, использующий строковый тип неограниченной длины string

где stream - это поток данных, string – переменная, в которую запишется строка и separator – строковый разделитель, показывающий на конец строки. Последний параметр функции можно опустить, тогда будет задан сепаратор по умолчанию - '\n'. Приведем пример работы этой функции getline  в программе:

Для начала нужно подключить соответствующие библиотеки:  iostream для работы с потоками ввода/вывода, string - со строками и vector - с контейнером. Программа записывает 4 предложения, предложение является законченным, только если в конце стоит ’;’.  . В функции в качестве потока поставлен выход с экрана cin, запись идет в str, чтобы потом перейти в vec, и разделителем является ’;’.

Не нашли ответ? Не беда, спросите в комментариях.

Ваш e-mail не будет опубликован. Обязательные поля помечены *