русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Создание потока вывода


Дата добавления: 2013-12-23; просмотров: 764; Нарушение авторских прав


Для того, чтобы связать поток вывода с массивом, используется конструктор ostrstream:

ostrstream ostr(char *buf, int size, int mode=ios::out);

Здесь buf служитуказателем на массив, который будет использоваться для хранения символов, записанных в поток ostr. Размер массива передается параметром size. По умолчанию поток открыт для нормального вывода, но, используя различные режимы, объединенные с помощью побитового ИЛИ, можно задать необходимый режим. Подробности обсуждались в предыдущей главе. Например, можно вклю­чить ios::app для того, чтобы выводимые данные были записаны в конец той информации, которая уже содержится в массиве.

После открытия потока вывода в массив, все выводимые в поток данные будут помещаться в массив. Однако никаких данных не будет записано за пределы массива. Попытка выполнить та­кую запись приведет к ошибке.

Ниже представлена простая программа, иллюстрирующая поток вывода в массив:

#include <strstrea.h>

#include <iostream.h>

int main()

{

char str[80];

int a = 10;

ostrstream outs(str, sizeof(str));

outs << "Hello there " << a+44 << hex << " ";

outs.setf(ios::showbase);

outs << 100 << ends;

cout << str; // вывод строки на консоль

return 0;

}

Эта программа выводит текст «Hello there 54 0x64». Надо иметь в виду, что outs является потоком, подобно любому другому потоку, и поэтому он имеет те же возможности, что и любой из рассмотренных выше потоков. Единственная разница заключается в том, что поток связан с памятью. Поскольку outs является потоком, то можно использовать манипуляторы наподобие hex или ends. Функции-члены класса ostream, такие как setf(), также сохраняют свое значение.

Если необходимо, чтобы массив для хранения данных завершался нулевым символом, необходи­мо явным образом записать данный нулевой символ. В предыдущей программе манипулятор ends использовался для создания строк, оканчивающихся нулем, но можно также использовать ‘\0’.



Если нет полной уверенности в том, что происходит в предыдущей программе, то надо срав­нить ее со следующей программой на языке С. Эта программа в функциональном отношении эквивалентна предыдущей С++-версии. Отличие заключается в том, что в ней для вывода в массив используется функция sprinf().

#include <stdio.h>

int main()

{

char str[80];

int a = 10;

sprintf(str, "Hello there %d %#x", a+44, 100);

printf (str);

return 0;

}

Можно определить количество символов в массиве с помощью вызова функции-члена pcount(). Она имеет следующий прототип:

int pcount();

Число, возвращаемое функцией pcount() также включает нулевой символ, если он существует.

Следующая программа иллюстрирует использование функции pcount(). Она сообщает, что в потоке outs содержится 17 символов — 16 букв и нулевой символ.

#include <strstrea.h>

#include <iostream.h>

int main()

{

char str[80];

ostrstream outs(str, sizeof(str));

outs << "Hello " << 34 << " " << 1234.23;

outs << ends; // завершение нулем

cout << outs.pcount(); // вывод числа символов в потоке outs

cout << " " << str;

return 0;

}



<== предыдущая лекция | следующая лекция ==>
Произвольный доступ | Произвольный доступ в массив


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.