c cout форматированный вывод

В С++, как и в С, нет встроенных в язык средств ввода-вывода.

В С для этих целей используется библиотека stdio.h .
В С++ разработана новая библиотека ввода-вывода iostream , использующая концепцию объектно-ориентированного программирования:

Библиотека iostream определяет три стандартных потока:

  • cin стандартный входной поток ( stdin в С)
  • cout стандартный выходной поток ( stdout в С)
  • cerr стандартный поток вывода сообщений об ошибках ( stderr в С)

Для их использования в Microsoft Visual Studio необходимо прописать строку:

Для выполнения операций ввода-вывода переопределены две операции поразрядного сдвига:

  • >> получить из входного потока
  • cout

Возможно многократное назначение потоков:
cout

Ввод информации

При этом из входного потока читается последовательность символов до пробела, затем эта последовательность преобразуется к типу идентификатора, и получаемое значение помещается в идентификатор:

Возможно многократное назначение потоков:
cin >> переменная1 >> переменная2 >>. >> переменнаяn;

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

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

Результат выполнения

Для ввода текста до символа перевода строки используется манипулятор потока getline() :

Результат выполнения

Манипуляторы потока

Функцию — манипулятор потока можно включать в операции помещения в поток и извлечения из потока ( >).

В С++ имеется ряд манипуляторов. Рассмотрим основные:

Манипулятор Описание
endl Помещение в выходной поток символа конца строки ‘
dec Установка основания 10-ой системы счисления
oct Установка основания 8-ой системы счисления
hex Установка основания 16-ой системы счисления
setbase Вывод базовой системы счисления
width(ширина) Устанавливает ширину поля вывода
fill(‘символ’) Заполняет пустые знакоместа значением символа
precision(точность) Устанавливает количество значащих цифр в числе (или после запятой) в зависимости от использования fixed
fixed Показывает, что установленная точность относится к количеству знаков после запятой
showpos Показывает знак + для положительных чисел
scientific Выводит число в экспоненциальной форме
get() Ожидает ввода символа
getline(указатель, количество) Ожидает ввода строки символов. Максимальное количество символов ограничено полем количество

Пример Программа ввода-вывода значения переменной в C++

Та же программа, написанная на языке Си

Пример Использование форматированного вывода

Результат выполнения

Еще один пример использования форматированного вывода: для t∈[0;3] с шагом 0,5 вычислить значение y=cos(t).

Результат выполнения

Мне надо в выводе шесть 0, на С это будет так:

Как это можно на плюсах оформить?

1 ответ 1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками c++ или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.11.15.35459

Я относительно новичок в мире C ++.
я знаю std::cout используется для вывода на консоль в C ++. Но рассмотрим следующий код на C:

Как добиться аналогичного форматирования значения типа double с точностью до 2 десятичных знаков, используя cout в С ++?

Я знаю, что C ++ обратно совместим с C. Но есть ли в C ++ эквивалент printf (), если так, то где он определяется?

Решение

Это то, что вы хотите:

Другие решения

Есть нет эквивалент. Это боль, используя cout для форматированного вывода.

Все предлагаемые решения звонят setprecision и подобные ужасны при использовании длинных форматов.

boost::format не поддерживает некоторые очень хорошие функции. Несовместимость с printf . Я все еще использую printf потому что это непобедимо.

Если вы действительно хотите использовать те же методы форматирования, что и в C, вы можете использовать Повысьте :: формат , который делает именно это:

Но есть ли эквивалент printf () в C ++, если так, то где он определен?

Есть предложение по стандартам P0645 добавить аналогичное средство форматирования в C ++. В то же время вы можете использовать библиотека который реализует это предложение и многое другое:

P0645 и используют синтаксис строки формата, подобный Python, который похож на printf х но использует <> в качестве разделителей вместо % ,

Также информация о типе сохраняется, поэтому вам не нужно l или другие шумовые характеристики.

Сохраните вашу программу как CPP и запустить его.

Он запускает и печатает ответ.

Потому что C ++ также имеет printf() а также scanf() лайк C ,

Вы также можете использовать sprintf в C ++, чтобы «напечатать» строку, а затем вырезать эту строку. Эта стратегия использует ваш опыт форматирования в стиле printf.

Если вы хотите использовать printf как форматирование вы, вероятно, должны использовать snprintf (или построить распределительный вариант этого поверх этого). Обратите внимание, что sprintf требует, чтобы вы были в состоянии гарантировать, что результат не превысит буфер, в котором вы должны сохранять определенное поведение. С snprintf с другой стороны, можно гарантировать, что он не будет переполнять буфер, так как вы указываете максимальное количество символов, которое будет записано в строку (вместо этого он усекает вывод).

Вы могли бы даже построить что-то, что можно напрямую подавать на ostream на вершине snprintf автоматически распределяя буфер и помещая в объект, который при уничтожении освобождает эту память. Это в дополнение к способу подачи объекта на ostream закончил бы это. Что-то вроде (с местом для улучшений):

тогда вы используете это как:

Если вы используете библиотеки GNU, вы, конечно, можете использовать printf непосредственно с cout а также stdout один и тот же объект тогда. В противном случае вам следует избегать смешивания stdio а также iostreams поскольку нет никакой гарантии, что они синхронизированы друг с другом.

Чтобы вывести значение на консоль с помощью C ++, вам нужен глобальный объект ostream соиЬ и заголовочный файл Вы также можете использовать различные флаги форматирования для управления представлением вывода …

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