Ввод и вывод
Существует много способов для ввода и вывода данных. На наш взгляд, самым удобным является ввод и вывод через стандартные потоки cin
на ввод и cout
на вывод.
Более подробная информация находится на cppreference (cin, cout).
Буква c
в названии означает "символ", cin
— ввод символов, cout
— вывод символов.
Первым делом стоит подключить библиотеку iostream
, которая содержит реализацию этих потоков, и ещё прописать using namespace std;
.
Ввод
Для выполнения операций ввода переопределен оператор >>
.
При выполнение
cin >> x;
из входного потока читается последовательность символов до пробела, затем эта последовательность преобразуется к типу переменнойx
, и получаемое значение помещается в переменнуюx
.
Если cin
не смог сконвертировать входные данные в ожидаемый формат, то он будет помечен как ошибка и программа может завершиться с ошибкой (RE).
Можно вводить сразу много переменных и сразу разных типов — cin >> x >> y >> c >> d;
.
Считывание строки (не типа)
Для этого существует функция getline
из той-же библиотеки.
Прочтите, например, тут.
Вывод
Всё аналогично вводу, только перегружен оператор <<
.
Команда cout << x << ' ' << y << '\n';
— выполнится только в том случае, если переменная x
и y
будут иметь реализацию для вывода (все базовые типы умеют это делать, но при выводе массив будет адрес (далее поймём почему)).
'\n'
— символ перевода каретки (переход на новую строки). endl
(std::endl
) — хуже. Он делает тоже самое, но дополнительно делает достаточно бесполезное действие с буфером.
Ускорение ввода
Можно катастрофически ускорить чтение всего парами строками, размещённой в начале программы (в main сразу напишите):
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
Если интересно, то прочтите почему это так.
Вообще можно построить свой буферный ввод и вывод, но таким не стоит заниматься.
Используйте '\n'
вместо std::endl
.
Хорошенько потренируйтесь, попробуйте вводить и выводить разные типы. Когда поймёте, что поняли эту тему, можете смело приступать к следующему уроку.