Корректное использование std::cin и std::cout
Выполняйте ввод и вывод через стандартные потоки и избегайте распространённых ошибок.
«Корректное использование std::cin и std::cout» — бесплатный урок C++ Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.
Заголовок iostream
И std::cin, и std::cout — это объекты из заголовочного файла <iostream>. Они представляют стандартные потоки ввода и вывода терминала.
Вывод с помощью std::cout
Передавайте значения в std::cout с помощью <<. Это работает для любого типа, у которого есть перегрузка operator<<, включая все встроенные типы и std::string.
int age = 30;
std::string name = "Ada";
std::cout << "Name: " << name << ", Age: " << age << "\n";Ввод с помощью std::cin
Читайте значения с помощью std::cin >> variable. Пробельные символы разделяют токены.
int age;
std::string name;
std::cout << "Enter name and age: ";
std::cin >> name >> age;
std::cout << name << " is " << age << "\n";Пропуск пробельных символов
По умолчанию >> пропускает начальные пробельные символы — пробелы, табуляции и символы новой строки — перед чтением. Обычно это удобно, но помните об этом при чтении отдельных символов.
Чтение целой строки
std::cin >> name считывает только одно слово. Чтобы прочитать строку с пробелами, используйте std::getline.
std::string line;
std::getline(std::cin, line);
std::cout << "You said: " << line;Сочетание >> и getline: распространённая ошибка
После std::cin >> n символ новой строки остаётся в буфере. Следующий вызов getline считывает пустую строку. Сначала удалите символ новой строки.
int n;
std::cin >> n;
std::cin.ignore(); // consume the leftover newline
std::string line;
std::getline(std::cin, line);Состояние потока
У потоков есть биты состояния: good, eof, fail и bad. Используйте if (std::cin), чтобы проверить, что после извлечения поток всё ещё доступен для использования.
Обнаружение EOF
Конец файла обозначается сочетанием Ctrl+D в Unix или Ctrl+Z в Windows. Выполняйте цикл, пока поток находится в рабочем состоянии, чтобы обработать весь ввод.
int n;
while (std::cin >> n) {
std::cout << n * 2 << "\n";
}Ускоренный ввод-вывод для соревновательного программирования
Отключите синхронизацию с вводом-выводом C, чтобы ускорить чтение в соревновательном программировании. Также отвяжите cin от cout.
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);std::endl и \n: ещё раз
std::endl записывает символ новой строки и сбрасывает буфер. "\n" только записывает символ новой строки. Используйте "\n" в циклах, чтобы сохранить высокую производительность.
Ручной сброс буфера
Если необходимо сбросить буфер без символа новой строки, используйте std::flush. Это удобно для индикаторов выполнения.
for (int i = 0; i < 100; ++i) {
std::cout << "\r" << i << "%" << std::flush;
// ... work ...
}Быстрая проверка
В чём разница между std::endl и "\n" при выводе?
Итоги
Используйте std::cout с << для вывода и std::cin с >> для чтения токенов. Для чтения целых строк используйте std::getline, а оставшиеся символы новой строки после числового ввода удаляйте с помощью cin.ignore().
Часто задаваемые вопросы
Урок «Корректное использование std::cin и std::cout» бесплатный?
Да — полный текст урока «Корректное использование std::cin и std::cout» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.
Чему я научусь в уроке «Корректное использование std::cin и std::cout»?
Выполняйте ввод и вывод через стандартные потоки и избегайте распространённых ошибок. Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C++ Academy?
Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Корректное использование std::cin и std::cout»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C++ Academy?
Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Корректное использование std::cin и std::cout
- Форматирование вывода с iomanip
- Безопасное чтение ввода с помощью getline
- Работа с std::cerr и std::clog