Old Programmer
5454 subscribers

Язык программирования C++. Стандартные библиотеки (статья 3, библиотека iostream)

102 full reads

Сегодня на моем канале продолжение изучения стандартных библиотек C++.

Весь мой канал Old Programmer здесь:

А это о стандартной библиотеке iostream, де предыдущие статьи:

Метод getline() объекта cin

Мы уже знакомились в предыдущих статьях (см. 1 и 2) с форматным вводом-выводом. Но иногда вместо форматного ввода удобно использовать ввод строки, а уже потом анализировать эту строку и, при необходимости, преобразовать ее к тому или иному формату. Для этого служит метод объекта cin getline().

В общем случае метод имеет три параметра: указатель на строку, максимальная длина в байтах, символ - разделитель. Последний параметр определяет символ, до которого осуществляется ввод. Этот параметр можно опустить и тогда по-умолчанию ввод будет осуществляться до символа '\n' - нажатие клавиши ввод. При этом символ '\n' в любом случае завершает ввод. Таким образом длина полученной строки ограничена тремя факторами: нажатием клавиши ввод, указанной длиной буфера ввода, наличие символа-разделителя.

Рассмотрим простейшую программу cpp4.cpp. Возьмем несколько вариантов ввода

1 -й вариант.

Ввод:
qwertyuiopa

Вывод:
qwertyuio

В данном случае ввод был ограничен заданной длиной. При этом полученная строка имеет длину 9 байтов, а 10, как можно было бы подумать. Просто при вводе был учтен последний символ - перевод строки, который, однако в полученную строку не попал.

2-й вариант.

Ввод:
123:22

Вывод:
123

Во 2-м варианте ввод ограничил символ-разделитель, который в конечную строку не попал.

Форматный ввод таит в себе определенные трудности. Нужно обрабатывать ситуации, когда ввод данных не соответствует требованиям формата. Требования, при этом, не всегда могут быть легко обработаны стандартным способом.

Часто вместо форматного ввода используется как раз ввод строки и затем анализ и преобразование полученных данных.

В программе cpp5.cpp представлен пример ввода длинного целого положительного числа. Вводится строка, а потом делается попытка преобразовать ее в число. Метод stol() обладает тем свойством, что, преобразуя строку число, не дает ошибку, если слева есть хотя бы одна цифра. Кроме того, функция игнорирует наличие в начале произвольное количество пробелов. Поэтому в программе производится в начале проверки строки на наличие не цифровых символов. Наличие хотя бы одного приводит к тому, что выбрасывается исключение.

Пока все

Продолжение следует...

Пока, любители великого и ужасного языка C++. Подписываемся на мой канал Old Programmer.

Фрагмент программы cpp5.cpp
Фрагмент программы cpp5.cpp

#программирование #программисты #с++ #языки программирования