Функция getline предназначена для ввода данных из потока, например, для ввода данных из консольного окна. Если формально описывать ее функционал, то она извлекает данные из входного потока до строкового разделителя, который не записывается в получившийся массив данных.
В итоге, получается извлечение одной строки и записывание ее в переменную. Сама конструкция getline выглядит так:
1 |
cin.getline(string, streamsize, separator); |
где string – переменная типа char*, в которую запишется строка, streamsize - максимально количество символов, которое может быть записано в строку, и separator – строковый разделитель, показывающий на конец строки. Последний параметр функции можно опустить, тогда будет задан сепаратор по умолчанию - '\n'. Приведем пример работы функции getline в программе:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> using namespace std; int main() { char str[256]; cout << "Введите четыре предложения: " << endl; cin.getline(str, 256, ';'); cout << str; cin.getline(str, 256, ';'); cout << str; } |
Для начала нужно подключить соответствующую библиотеку iostream для работы с потоками ввода/вывода. Программа записывает 2 предложения, предложение является законченным, только если в конце стоит ’;’ или такой символ не стоит, но длина предложения 256 символов. В функции в качестве потока поставлен вывод с экрана cin, запись идет в str и разделителем является ’;’. После записи предложения выводятся на экран.
Функция getline с типом string
У функции getline есть ещё один популярный вариант, использующий строковый тип неограниченной длины string
1 |
getline(stream, string, separator); |
где stream - это поток данных, string – переменная, в которую запишется строка и separator – строковый разделитель, показывающий на конец строки. Последний параметр функции можно опустить, тогда будет задан сепаратор по умолчанию - '\n'. Приведем пример работы этой функции getline в программе:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <string> #include <iostream> #include <vector> using namespace std; int main(){ string str; vector<string> vec; cout << "Введите четыре предложения: " << endl; while ((getline(cin, str, ';'))&&(vec.size()<4)) { vec.push_back(str); } } |
Для начала нужно подключить соответствующие библиотеки: iostream для работы с потоками ввода/вывода, string - со строками и vector - с контейнером. Программа записывает 4 предложения, предложение является законченным, только если в конце стоит ’;’. . В функции в качестве потока поставлен выход с экрана cin, запись идет в str, чтобы потом перейти в vec, и разделителем является ’;’.