Что такое iostream в c
iostream
iostream — заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++. Он включён в стандартную библиотеку C++. Название образовано от Input/Output Stream («поток ввода-вывода»). В языке C++ и его предшественнике, языке программирования Си, нет встроенной поддержки ввода-вывода, вместо этого используется библиотека функций. iostream управляет вводом-выводом, как и stdio.h в Cи. iostream использует объекты cin, cout, cerr и clog для передачи информации в и из стандартных потоков ввода, вывода, ошибок (без буферизации) и ошибок (с буферизацией) соответственно. Являясь частью стандартной библиотеки C++, эти объекты также являются частью стандартного пространства имён — std.
Содержание
Пример
Простейшая программа «Hello, world!» (с использованием библиотеки iostream) может быть записана так:
Форматирование вывода
Функции
width(int x) | минимальное число знаков до следующего вывода |
fill(char x) | устанавливает символ-заполнитель и возвращает предыдущий символ-заполнитель. По умолчанию в качестве символа-заполнителя используется пробел |
precision(int x) | устанавливает число значащих знаков для чисел с плавающей точкой |
Манипуляторы
Стандартная библиотека предлагает большое количество манипуляторов, среди них:
endl | перевод строки и вызов flush |
flush | выгружает содержимое буфера в поток |
hex | меняет формат вывода числа на шестнадцатеричный |
showpos | показывает + перед неотрицательными числами |
noshowpoint | скрывает десятичную точку |
Пример для манипулятора endl:
См. также
Примечания
Ссылки
Полезное
Смотреть что такое «iostream» в других словарях:
Iostream — es un archivo de cabecera que es utilizado para operaciones de entrada/salida en el lenguaje de programación C++. iostream es parte de la biblioteca estándar de C++. Su nombre es un acrónimo de Input/Output Stream. El flujo de entrada y salida de … Wikipedia Español
Iostream — iostream заголовочный файл с классами, функциями и переменными для организации ввода вывода в языке программирования C++. Он включён в стандартную библиотеку C++. Название образовано от Input/Output Stream («поток ввода вывода»). В языке… … Википедия
Iostream — is a header file which is used for input/output in the C++ programming language. It is part of the C++ standard library. The name stands for Input/Output Stream. In C++ and its predecessor, the C programming language, there is no special syntax… … Wikipedia
iostream — C++ Standard Library fstream iomanip ios iostream sstream string … Wikipedia
Iostream.h — … Википедия
Iostream.hpp — … Википедия
C++ — Desarrollador(es) Bjarne Stroustrup, Bell Labs Información general … Wikipedia Español
C++ — У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в … Википедия
Стандартная библиотека языка C++ — Стандартная библиотека языка программирования C++ fstream iomanip ios iostream sstream Стандартная библиотека шаблонов … Википедия
Printf — The class of printf functions (which stands for print formatted ) is a class of functions, typically associated with curly bracket programming languages, that accept a string parameter (called the format string) which specifies a method for… … Wikipedia
1.5 – Знакомство с iostream: cout, cin и endl
Библиотека ввода/вывода
Библиотека ввода/вывода (библиотека io) является частью стандартной библиотеки C++, которая имеет дело с базовым вводом и выводом. Мы будем использовать функции этой библиотеки для получения ввода с клавиатуры и вывода данных в консоль. Буквы io в iostream означают «input/output» (ввод/вывод).
std::cout
Вспомним нашу программу Hello world :
std::cout может печатать не только текст, но и числа:
Это дает результат:
Его также можно использовать для вывода значений переменных:
Это дает результат:
Чтобы напечатать несколько элементов в одной строке, для объединения (связывания) нескольких частей выводимых данных, оператор вставки ( ) можно использовать несколько раз в одном выражении. Например:
Эта программа печатает:
Вот еще один пример, в котором мы печатаем и текст, и значение переменной в одном выражении:
Эта программа печатает:
std::endl
Как вы думаете, что напечатает следующая программа?
Результат может вас удивить:
Отдельные выражения вывода не приводят к отдельным выводимым строкам в консоли.
Если мы хотим выводить в консоль отдельные выводимые строки, нам нужно указать консоли, когда необходимо переместить курсор на следующую строку.
Совет
В приведенной выше программе второй std::endl технически не нужен, так как программа сразу же после этого завершается. Однако он служит двум полезным целям: во-первых, он помогает указать, что строка вывода является «законченной мыслью». Во-вторых, если мы позже захотим добавить дополнительные выражения вывода, нам не нужно будет изменять существующий код. Мы можем просто добавить новые выражения.
std::endl против ‘\n’
Вот пример, в котором ‘\n’ используется двумя разными способами:
Этот код напечатает:
Обратите внимание, что когда ‘\n’ используется сам по себе для перемещения курсора на следующую строку, необходимы одинарные кавычки. При встраивании в текст, который уже заключен в двойные кавычки, одинарные кавычки не нужны.
Мы рассмотрим, что такое ‘\n’ более подробно, когда перейдем к уроку о символах (4.11 – Символы).
Лучшая практика
Предупреждение
‘\n’ использует обратный слеш (как и все специальные символы в C++), а не прямой слеш. Использование прямого слеша (например, ‘/n’ ) может привести к неожиданному поведению.
std::cin
Если ваш экран закрывается сразу после ввода числа, обратитесь к уроку «0.8 – Несколько основных проблем C++» для решения этой проблем.
Лучшая практика
Существуют споры о том, нужно ли инициализировать переменную непосредственно перед тем, как передать ей значение, предоставленное пользователем, через другой источник (например, std::cin ), поскольку значение, предоставленное пользователем, просто перезапишет значение инициализации. В соответствии с нашей предыдущей рекомендацией о том, что переменные всегда следует инициализировать, лучше всего сначала инициализировать переменную.
Мы обсудим, как std::cin обрабатывает недопустимые входные данные в следующем уроке (7.16 – std::cin и обработка недопустимых входных данных).
Для продвинутых читателей
Резюме
Подробнее об операторах мы поговорим в уроке «1.9 – Знакомство с литералами и операторами».
Небольшой тест
Вопрос 1
Рассмотрим следующую программу, которую мы использовали выше:
Запустите эту программу несколько раз и опишите, что произойдет, если вместо этого вы введете следующие типы входных данных:
б) Число с дробной частью. Попробуйте числа с дробными составляющими меньше 0,5 и больше 0,5 (например, 3,2 и 3,7).
Дробная составляющая опущена.
Всё прекрасно работает.
г) Слово, например «Hello».
д) Действительно большое число (минимум 3 миллиарда).
Вы получаете, казалось бы, случайное число.
Последнее предложение может быть особенно неожиданным. Попробуйте! Это происходит потому, что x может содержать числа только до определенного размера. После этого он «переполняется». Мы обсудим переполнение в следующем уроке.
Iostream
Iostream
iostream — заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++. Он включён в стандартную библиотеку C++. Название образовано от Input/Output Stream («поток ввода-вывода»). В языке C++ и его предшественнике, языке программирования Си, нет встроенной поддержки ввода-вывода, вместо этого используется библиотека функций. iostream управляет вводом-выводом, как и stdio.h в Cи. iostream использует объекты cin, cout, cerr и clog для передачи информации в и из стандартных потоков ввода, вывода, ошибок (без буферизации) и ошибок (с буферизацией) соответственно. Являясь частью стандартной библиотеки C++, эти объекты также являются частью стандартного пространства имён — std.
Содержание
Пример
Например, программа «Hello, world!» может быть записана так:
Эта программа выведет «Hello, world!» с последующим переходом на новую строку (endl).
Форматирование вывода
Функции
width(int x) | минимальное число знаков до следующего вывода |
fill(char x) | устанавливает символ-заполнитель и возвращает предыдущий символ-заполнитель. По умолчанию в качестве символа-заполнителя используется пробел |
precision(int x) | устанавливает число значащих знаков для чисел с плавающей точкой |
Манипуляторы
endl | перевод строки |
flush | выгружает содержимое буфера в поток |
dec | меняет формат вывода числа на десятичный |
oct | меняет формат вывода числа на восьмеричный |
hex | меняет формат вывода числа на шестнадцатеричный |
ws | извлекает и удаляет символы пустых промежутков из потока |
showpos | показывает + перед неотрицательными числами |
showpoint | показывает десятичную точку |
noshowpoint | скрывает десятичную точку |
См. также
Примечания
Ссылки
Полезное
Смотреть что такое «Iostream» в других словарях:
Iostream — es un archivo de cabecera que es utilizado para operaciones de entrada/salida en el lenguaje de programación C++. iostream es parte de la biblioteca estándar de C++. Su nombre es un acrónimo de Input/Output Stream. El flujo de entrada y salida de … Wikipedia Español
Iostream — is a header file which is used for input/output in the C++ programming language. It is part of the C++ standard library. The name stands for Input/Output Stream. In C++ and its predecessor, the C programming language, there is no special syntax… … Wikipedia
iostream — Стандартная библиотека языка программирования C++ fstream iomanip ios iostream sstream Стандартная библиотека шаблонов … Википедия
iostream — C++ Standard Library fstream iomanip ios iostream sstream string … Wikipedia
Iostream.h — … Википедия
Iostream.hpp — … Википедия
C++ — Desarrollador(es) Bjarne Stroustrup, Bell Labs Información general … Wikipedia Español
C++ — У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в … Википедия
Стандартная библиотека языка C++ — Стандартная библиотека языка программирования C++ fstream iomanip ios iostream sstream Стандартная библиотека шаблонов … Википедия
Printf — The class of printf functions (which stands for print formatted ) is a class of functions, typically associated with curly bracket programming languages, that accept a string parameter (called the format string) which specifies a method for… … Wikipedia
Библиотека iostream
Библиотека потокового ввода-вывода iostream может быть использована в качестве альтернативы известной стандартной библиотеки ввода-вывода языка С – stdio. Для нас библиотека iostream интересна как прекрасный пример объектно-ориентированного проектирования, так как содержит многие характерные приемы и конструкции.
В основе ООП подхода, реализуемого средствами iostream, лежит предположение о том, что объекты обладают знанием того, какие действия следует предпринимать при вводе и выводе.
При пользовании библиотекой iostream ошибки, связанные с «перепутыванием» типов данных, исключены. Если вы используете в операции ввода-вывода переменную типа unsigned long, то вызывается подпрограмма, ответственная именно за этот тип.
Библиотека stdio поддерживает средства языка С, позволяющее использовать переменное число параметров. Но такая гибкость дается не даром – на этапе компиляции проверка соответствия между спецификацией формата, как в функциях printf() и scanf(), не выполняется.
В библиотеке iostream применен другой подход. Операторы ввода-вывода оформляются в виде выражений с применением переопределяемых функций-операторов для каждого из типов данных, встречающихся в выражении. Если вам необходимо использовать новый тип данных в операциях ввода-вывода, вы можете расширить библиотеку iostream своими функциями-операторами.
Библиотека iostream более медленная, чем stdio, но это небольшая плата за надежность и расширяемость, базирующиеся на возможностях объектно-ориентированных средств вывода.
Для начала рассмотрим основы применения iostream, то есть, как читать и писать данные встроенных в С++ типов. Затем обсудим, как строить собственные операции потокового ввода и вывода (операторы внесения и извлечения) для разработанных вами типов данных.
Простое внесение
Начнем с простой программы, обращающейся к стандартным средствам языка С, а затем преобразуем применяя для ввода-вывода средства библиотеки iostream. (Это был наш первый пример программы на С++)
Вариант на стандартном С | Вариант на С++ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include int i; char buff[80]; printf ("Введите число:"); scanf("%d", &i); printf ("Введите символьную строку:"); gets (buff); printf ("Вы ввели число: %d\n Вы ввели строку: %s\n", i, buff); | #include int i; char buff[80]; cout > i >> buff; cout > i >> buff; При анализе этой конструкции компилятор ведет себя так же, как и при анализе выражения внесения, подставляя вызовы функции в соответствии с типами используемых переменных. А что будет в случае ошибочного выражения? Конечно, ошибочные данные – это всегда ошибочные данные, и ни один язык не сможет их исправить. Но средствами языка можно создать программу, устойчивую к разрушительному действию ошибочных данных. Пусть, к примеру, наша программа ожидает на вводе строку «12 строчечка». Если на вход поступит «строчечка 12», то программа будет в большом затруднении при попытке интерпретировать «строчечка» как число. Однако библиотека iostream, в отличие от scanf(), производит контроль ошибок после ввода каждого значения. Кроме того, iostream может быть расширена введением операторов для новых типов. Одна из наиболее распространенных ошибок при использовании scanf() – это задание вместо адресов аргументов их значений. Другая распространенная ошибка – путаница в использовании модификаторов форматов. При работе с iostream такого не бывает, так как проверка соответствия типов – неотъемлемая часть процесса ввода-вывода. Компилятор обеспечивает вызов функций-операторов, строго соответствующих используемым типам. Создание собственных функций внесения и извлеченияФункции внесения и извлечения возвращают ссылку на соответствующие объекты, являющиеся, соответственно, потоками вывода или ввода. Первые аргументы тоже должны быть ссылкой на поток. Второй параметр – ссылка на объект, выводящий или получающий информацию. Эти функции не могут быть методами класса, для работы с которым они создаются. Если бы это было так, то левым аргументом, при вызове операции >), должен стоять объект, генерирующий вызов этой функции. main() Манипуляторы ввода –выводаКроме представленных ранее методов, существует и другой способ управления процессом ввода-вывода, основанный на использовании манипуляторов ввода-вывода. Манипуляторы позволяют менять режимы операций ввода-вывода непосредственно в выражениях внесения или извлечения. Для того чтобы использовать их в своей программе, в исходные тексты нужно включить заголовочный файл iomanip.h. В прошлый раз мы накладывали ограничение на размер буфера cin, применяя метод width(): cin.width(sizeof(buff)); Теперь, используя манипулятор setw(), можно определить размер буфера так cin >> setw (sizeof (buff)) >> buff; Существует два вида манипуляторов ввода-вывода: параметризованные и непараметризованные. Вот список стандартных манипуляторов библиотеки iostream()
Вот некоторые из флагов потока
Кроме того, вы можете создать свой собственные манипуляторы. Этому могут быть, по крайней мере, две причины. Во-первых, это может быть манипулятор, заключающий в себе некоторую часто встречающуюся в программе последовательность манипуляторов. Во-вторых, для управления нестандартными устройствами ввода-вывода. Создание непараметризованных манипуляторов не очень сложное занятие. Все, что для этого нужно, это определить функцию, имеющую прототип, похожий на следующий: Если вы пишите манипулятор только для вывода, ios замените на ostream, если для ввода – на istream. В теле функции можно, что-то сделать с потоком, переданным в качестве параметров, а затем передать его в вызывающую программу на переданный функции аргумент типа поток. Вот пример манипулятора для вывода с выравниванием по правому краю: Если в своей программе собираетесь использовать файловые потоки, то не забудьте внести в нее заголовочный файл fstream.h. Если будите применять строковые потоки, то нужно подключить заголовочный файл strstrea.h. Для выходных строковых потоков вы можете выделить буфер в программе или предоставить потоку возможность самому создать буфер динамически, но в таком случае придется заботиться о доступе к буферу, удалении и высвобождении выделенной под буфер памяти. char mybuff[128]; После этого i примет значение 123. Для входных строковых потоков можно использовать символьный массив с завершающим нулем, либо указав точный размер. #include Очень Подробно =)#include // подключение библиотек #include #include #include Линкер ругается | #include #include Дополню лишь, что не стоит сразу забивать себе голову содержанием библиотек. На начальном этапе это не главное. Если есть желание ознакомится с его содержимым, смотри код: Объясняет он нормально (пока добрался до 4-ой главы). Это шестнадцатиричное число. Unable to open include file ‘iostream’ Ошибка при добавлении #include
|