Перейти к основному содержимому

Ввод и вывод

cin передаёт данные программе, cout показывает результат

Программа должна не только считать внутри себя, но и общаться с пользователем. Для первых консольных программ достаточно двух потоков: cout выводит данные, cin читает данные.

Коротко

cout отправляет текст в консоль. cin получает данные из консоли. В учебных примерах выводим английский текст, чтобы избежать проблем с кодировкой.

Вывод одной строки

#include <iostream>
using namespace std;

int main() {
cout << "Start" << endl;
return 0;
}

endl переводит вывод на новую строку. Для простых уроков этого достаточно.

Вывод нескольких значений

#include <iostream>
using namespace std;

int main() {
int speed = 80;
int dist = 25;

cout << "speed = " << speed << endl;
cout << "dist = " << dist << endl;
return 0;
}

Вывод:

speed = 80
dist = 25

Одна команда cout может содержать несколько частей. Они выводятся слева направо.

Вывод на несколько строк

#include <iostream>
using namespace std;

int main() {
cout << "Robot" << endl;
cout << "Mode: test" << endl;
cout << "Status: ok" << endl;
return 0;
}

Можно использовать и \n внутри строки:

#include <iostream>
using namespace std;

int main() {
cout << "Line 1\nLine 2\n";
return 0;
}

Для новичка endl обычно нагляднее, а \n короче.

Несколько частей вывода собираются в одну строку

Ввод одного числа

#include <iostream>
using namespace std;

int main() {
int speed = 0;

cout << "Enter speed: ";
cin >> speed;

cout << "speed = " << speed << endl;
return 0;
}

Сначала переменной задают начальное значение, затем cin записывает новое значение из консоли.

Ввод нескольких чисел

#include <iostream>
using namespace std;

int main() {
int a = 0;
int b = 0;
int sum = 0;

cout << "Enter two numbers: ";
cin >> a >> b;

sum = a + b;
cout << "sum = " << sum << endl;
return 0;
}

Пользователь может ввести числа в одной строке через пробел или в разных строках.

Проверка простого ввода

Если вместо числа ввести текст, cin не сможет записать значение. Пока используем простую проверку:

#include <iostream>
using namespace std;

int main() {
int speed = 0;

cout << "Enter speed: ";
cin >> speed;

if (!cin) {
cout << "Input error" << endl;
return 1;
}

cout << "speed = " << speed << endl;
return 0;
}

Конструкция if подробно изучается позже. Сейчас достаточно понять: если ввод сломан, программа сообщает об ошибке и заканчивает работу.

Практика

  1. Выведите три строки с описанием робота: Robot, Mode, Status.
  2. Считайте число speed и выведите его обратно.
  3. Считайте два числа a и b, выведите их сумму.
  4. Сравните вывод через несколько endl и через .
  5. Попробуйте ввести текст вместо числа и посмотрите поведение программы.

Проверьте себя

  1. Что делает cout?
  2. Что делает cin?
  3. Зачем переменной задают значение до ввода?
  4. Как вывести несколько значений одной командой?
  5. Чем endl отличается от обычного текста?
Ориентиры для самопроверки

Сначала ответьте без подсказки. Ответ можно считать полным, если вы:

  • формулируете основную мысль своими словами;
  • называете важные условия, ограничения или меры безопасности;
  • для схемы, кода или расчёта показываете ход решения и ожидаемый результат.

Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.

Словарь статьи

ТерминЗначение
вводполучение данных программой
выводпоказ данных пользователю
потокнаправление передачи данных
coutстандартный вывод
cinстандартный ввод
endlпереход на новую строку

Связанные темы

Источники