iostream

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

iostreamбібліотека і відповідний заголовний файл, які використовується для організації введення-виведення в мові програмування C++. Він включений в стандартну бібліотеку C++. Назва утворена від англ. Input/Output Stream (потік введення-виведення). У мові C++ і її попереднику, мові програмування Сі, немає вбудованого вводу-виводу. Натомість використовується бібліотека iostream, яка керує вводом-виводом, як і stdio.h у Ci. iostream використовує об'єкти cin, cout, cerr і clog для передачі інформації між стандартними потоками введення, виведення, помилок (безбуферний) і помилок (буферний) відповідно. Будучи частиною стандартної бібліотеки C++, ці об'єкти також є частиною стандартного простору імен — std.

Приклад Hello, world[ред. | ред. код]

Наприклад, програма Hello world може бути представлена:

#include <iostream>
using std::cout;
using std::endl;

int main()
{
    cout<<"Hello World!"<<endl;
    return 0;
}

Програма виведе «Hello, world!» і переведе рядок (std::endl).

Форматування виводу[ред. | ред. код]

Функції[ред. | ред. код]

width(int x) мінімальне число знаків до наступного виводу
fill(char x) встановлює символ-заповнювач і повертає попередній символ-заповнювач. За умовчанням як символ-заповнювач використовується пропуск
precision(int x) встановлює число значущих знаків для чисел з плаваючою крапкою

Приклад:

cout.width(10);
cout << "ten" << "four" << "four";

Маніпулятори[ред. | ред. код]

endl переведення рядка
flush вивантажує вміст буфера в потік
dec міняє формат виведення числа на десятковий
oct міняє формат виведення числа на вісімковий
hex міняє формат виведення числа на шістнадцядковий
ws витягує і видаляє символи порожніх проміжків з потоку
showpos показує '+' перед додатними числами
showpoint показує десяткову крапку
noshowpoint приховує десяткову крапку

Критика[ред. | ред. код]

Деякі середовища не забезпечують розподілювального виконання C++ бібліотек. Приклади включають вбудовані системи і системи Windows, що керують програмами, побудованими з MinGW. Під цими системами стандартна бібліотека C++ повинна бути статично пов'язана з програмою, що збільшує розмір програми[1], або поширювати стандартну бібліотеку разом з програмою.

Деякі реалізації стандартної бібліотеки C++ мають істотні обсяги мертвого коду. Наприклад, GNU libstdc++ автоматично конструює локаль, будуючи ostream, навіть якщо програма ніколи не використовує ніяких типів (дата, час або гроші), на які впливає локаль[2], і статично зв'язана програма «hello, world», яка використовує GNU libstdc++ <iostream>, видає виконуваний файл значно більший, ніж еквівалентна програма, яка використовує <cstdio>[3]. Але існують часткові імплементації стандартної бібліотеки C++, спроектовані для обмежених в розмірі середовищ; їхній <iostream> може вилучити опціональний код, якого не потребує програма, такий як підтримка локалі.[4]

Виноски[ред. | ред. код]

  1. MinGW.org: Large executables. Архів оригіналу за 4 липня 2020. Процитовано 17 травня 2009.
  2. GNU libstdc++ source code, bits/ios_base.h
  3. Pin Eight: RAnT (Rants, Articles, and Treatises). Архів оригіналу за 3 травня 2009. Процитовано 17 травня 2009.
  4. uClibc++ C++ library. Архів оригіналу за 5 грудня 2012. Процитовано 17 травня 2009.

Посилання[ред. | ред. код]