Загрузка [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js
 

printВвод-вывод

printВвод и вывод в С++

Самой большой проблемой при использовании printf и scanf является несоответствие спецификатора формата и типа аргумента, а для scanf также пропущенная операция &.

С помощью перегрузки операций в C++ избавляются от формата, но в результате либо теряются некоторые возможности (пропуск вспомогательных символов, ввод заданного количества символов), либо их реализация является более сложной (ввод/вывод шестнадцатеричных чисел, выравнивание в поле заданной ширины).

Необходимые для ввода-вывода в С++ объекты и операции объявлены в следующих заголовочных файлах:

  • <iostream> – потоки ввода вывода и операции
  • <iomanip> – манипуляторы для форматированного ввода-вывода (устаревший способ)
  • <format> – форматирование для вывода (новый простой способ, аналог printf)

Для упрощения использования стандартной библиотеки С++ (STL) рекомендуется написать
using namespace std;
иначе перед каждым именем из STL нужно писать префикс std:: (std::cout, std::noskipws).

#include <iostream>
#include <format>
using namespace std;
int main()
{ double a,b;
  // ввод и вывод пары чисел
  cin>>a>>b; // scanf("%lg%lg",&a,&b);
  cout<<a<<" "<<b<<"\n"; // printf("%lg %lg\n",a,b);
  cout<<format("a+b={:10.2f}\n",a+b); // printf("a+b=%10.2lf\n,a+b);
  int d,m,y;
  char c;
  // ввод и вывод даты в формате d/m/y
  cin>>d>>c>>m>>c>>y; // scanf("%d/%d/%d",&d,&m,&y);
  cout<<d<<"/"<<m<<"/"<<y<<"\n"; // printf("%d/%d/%d\n",d,m,y);
  cout<<format("{:02}/{:02}/{}\n",d,m,y); // printf("%02d/%02d/%d\n",d,m,y);
}
Р’РІРѕРґ:

Выполнить
Вывод:
loading