Урок 11. Сout, cin и endl

   | 

   | 

 Обновлено 4 мая 2018  | 

 20292

 ǀ   28 

В этом уроке мы рассмотрим объекты cout, cin и endl.

std::cout

Как мы уже говорили в предыдущих уроках, объект std::cout (который находится в библиотеке iostream) используется для вывода текста в консольное окно. В качестве напоминания, вот наша программа «Hello, world!»:

Для того, чтобы вывести несколько предложений на одной строке оператор вывода << можно использовать несколько раз. Например:

Программа выведет:

b is 5

А что выведет эта программа?

Возможно, вы удивитесь, но:

Hey!My name is Anton.

std::endl

Если нужно вывести текст на нескольких строках – используйте std::endl. При использовании с std::cout, std::endl вставляет символ новой строки. Таким образом курсор переходит к началу следующей строки.

Например:

Результат:

Hey!
My name is Anton.



std::cin

std::cin — противоположность std::cout. В то время как std::cout выводит данные в консоль с помощью оператора вывода <<, std::cin получает данные от пользователя с помощью оператора ввода >>. Используя std::cin мы можем получать данные от пользователя и сохранять их в переменные.

Попробуйте скомпилировать и запустить эту программу. При запуске вы увидите «Enter a number:», затем программа будет ждать, пока вы введете число. Как только вы это сделаете и нажмете Enter, программа выведет «You entered», а затем ваше число.

Например (я ввел 5):

Enter a number: 5
You entered 5

Это самый простой способ получения данных от пользователя. Мы будем использовать его во многих дальнейших примерах.

Если ваше окно закрывается сразу после ввода числа — посмотрите урок 7 (там вы найдете решение этой проблемы).

Если же ввести действительно большое число, то результаты могут удивить. Попробуйте! Это происходит потому что переменная a может содержать числа только определенного размера. Если число больше/меньше допустимых максимумов/минимумов, то происходит переполнение (overflow). Мы обсудим overflow в следующем соответствующем уроке.

std::cin, std::cout, << и >>

Новички часто путают std::cin, std::cout, << и >>. Вот простые способы запомнить:

  std::cin и std::cout всегда идут по левой стороне стейтмента;

  std::cout используется для вывода значения (cOUT = вывод);

  std::cin используется для получения значения (cIN = ввод);

  оператор вывода << используется с std::cout и показывает направление, в котором данные движутся от r-value в консоль. std::cout << 5; (значение 5 перемещается в консоль);

  оператор ввода >> используется с std::cin и показывает направление, в котором данные движутся из консоли в переменную. std::cin >> a; (значение перемещается из консоли в переменную a).

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (228 оценок, среднее: 4,94 из 5)
Загрузка...
Подписаться на обновления:

Комментариев: 28

  1. Олег:

    Здравствуйте. Я не давно начал изучать программирование в целом. Не могли бы вы объяснить почему переменной а мы присвоили значение 0

    1. Юрий Юрий:

      Привет. Мы таким образом инициализировали a, обнулив её. В этом примере впринципе без этого можно обойтись, но в более сложных программах обнуление используется для того, чтобы предотвратить случайное или "мусорное" значение, которое могло быть присвоено переменной a где-то в коде раньше.

  2. Sergey Groysman:

    Маленький вопрос вдогонку: на будущее, чтобы сократить место в комментарии, как вы вставляете PrnScr со своими стейтментами?

    1. Li4ik Li4ik:

      PrnScr — это, я так понял, код? Код вставляется через специальный плагин в админке этого сайта, каждый код в комментарии я модерирую самостоятельно. Вы можете вставлять всё, как есть, за экономию места — не переживайте.

      Если же у вас слишком большой код, то воспользуйтесь сервисом OnlineGDB — там можно сохранять/компилировать свой код на С++. Вставили свой код, запустили его (проверили) и нажали на кнопочку Share — вам выдадут ссылку, по которой вы сможете поделиться этим кодом. Тогда здесь в комментариях уже указываете только эту ссылку на ваш код и задаете свои вопросы.

      1. master114:

        а копировать нужно
        Share Code:
        или
        Embed Code:

        и нужно ли добавлять какие-нибудь дополнительные теги к этим ссылкам чтобы код в комментариях отображался корректно?

        1. Юрий Юрий:

          Копировать ссылку нужно с Share Code. Добавлять в комментарии дополнительные теги не нужно — вставили ссылку, свой комментарий и всё.

  3. Sergey Groysman:

    День добрый, Юрий.
    Спасибо за ваши уроки.
    Преамбула вопроса — при выполнении данной функции у меня вводимая переменная d отображается при её вводе и потом повторно уже в команде cout. Вопрос: как её убрать из видимости при вводе и оставить только в команде cout?
    Спасибо.

    1. Li4ik Li4ik:

      Привет. Чтобы скрыть вводимое значение, нужно добавить заголовочный файл:

      И прописать следующие строчки в функции main():

      Готовый код:

      1. Sergey Groysman:

        Спасибо.

        1. Li4ik Li4ik:

          Пожалуйста 🙂

  4. Анна:

    Нигде не могу найти, в чем смысл данной строки? просто возврат каретки?

    1. Li4ik Li4ik:

      endl — это перенос на новую строку и очистка потока, аналог переноса на новую строку — ‘\n’. cout << endl, как отдельная строчка, используется просто для переноса на новую строку, двойной cout << endl используется для пробела между строками (результат виден в консоли). Т.е. можно в конце строки добавить '\n':

      Либо

      Результат один и тот же, просто endl еще и очищает за собою поток данных.

      1. Анна:

        Спасибо! Теперь все понятно 🙂

  5. beksheikh:

    Здравствуйте.объясните если возможно для чего надо ставить стд?можно же и без него..работаю на дев с++.и еще для чего нужен std::cin(get)?..если хотите могу написать полный код.С уважением Я)).

    1. Li4ik Li4ik:

      Привет, об std:: говорится в уроке 24 и в уроке 54. Следуйте порядку, в котором изложены уроки и всё узнаете — всё, что вам нужно знать.

      Об std::cin(get) первый раз слышу, возможно std::cin.get()?

      1. beksheikh:

        Да.)не правильно написал

        1. Li4ik Li4ik:

          cin.get() считывает из входного потока данных один символ, используется для "задержания" консольного окна.

    2. painkiller:

      Тоже работаю в этой IDE — она более простая и понятная для новичка!
      Чтобы не было никаких проблем с преждевременным закрытием окна консоли, нужно перед последней фигурной скобкой (}) писать следующее:
      cin.ignore(); — последнее нажатие ENTER игнорируется;
      cin.get(); — ждёт этого нажатия от Вас;

  6. Иван:

    Здравствуй. Подскажи как поместить в одну строку два ввода cin?
    Заранее спасибо.

    1. Li4ik Li4ik:

      Привет. Объясни кодом, на примере, что ты конкретно хочешь. Разместить два стейтмента cin можно на одной строке

      Между ними можно вставить cout и разместить всё также на одной строке:

      1. Иван:

        Мне нужно, чтобы 2 ввода, в консоли, на одной строчке были. Хочу, чтобы в консоли было примерно так:
        Калькулятор
        Введите цифру: 5 * 6 = 30

        1. Li4ik Li4ik:

          Во-первых, вы пробовали гуглить или искать ответ на StackOverflow?

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

          В консоли вы можете вводить значения так:

          7 8

          и нажимать Enter.

          В итоге у вас будет x = 7 и y = 8. Что делать, чтобы выводить результат умножения этих двух значений на этой же строке, где вы ввели 7 и 8 — я не знаю. Вы должны обязательно нажать Enter, чтобы завершить ввод чисел для cin, а когда вы нажимаете Enter, то вы автоматически переходите на следующую строку. Решения, как это всё обойти, я не нашел.

  7. Katy:

    У меня не отображаются цифры и слова после Enter a number, а когда я поменяла cin на cout всё появилось. Не могли бы вы мне подсказать, что с этим делать?

    1. Li4ik Li4ik:

      Я не очень понял ваш вопрос. На будущее, если у вас возникают вопросы по вашей программе — прикрепляйте код.

      Cin нужен для ввода данных (слов, цифр, букв, предложений), cout для вывода. Если вы только указываете cin в коде, то выводиться ничего не будет. Если вы указываете только cout, то выводиться будет то, что вы указали вместе с cout. То есть c помощью cin вывести вы не сможете ничего, так как он для этого не предназначен.

  8. Александр:

    Здравствуйте.
    Подскажите, после команд
    std::cin >>
    std::cout <<
    для чего нужны кавычки, ведь и так понятно что,
    std::cin — это ввод
    std::cout — это вывод
    Это просто такой синтаксис или эти команды также используются с другими символоми и соответственно имеют другое предназначение ?

    Начинаю изучение программирования с нуля, поэтому не хочу оставлять пробелов в понимании.

    1. Li4ik Li4ik:

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

      1. Александр:

        Я не однозначно сформулировал вопрос, я имел ввиду не эти кавычки "", а вот эти << и >>.
        Это просто такой синтаксис или команды
        std::cin
        std::cout
        могут использоваться с другими символами и соответственно иметь другое значение ?

        1. Li4ik Li4ik:

          Скобки показывают направление потока данных, >> — поток данных идёт внутрь, << — поток данных идёт изнутри. Скобки являются частью синтаксиса. Cin и cout всегда используются со скобками, другого значения, кроме как ввода/вывода данных у cin/cout нет.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

ПОДПИСЫВАЙТЕСЬ

НА КАНАЛ RAVESLI В TELEGRAM

@ravesli

ПОДПИСАТЬСЯ БЕСПЛАТНО