русс | укр

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

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

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

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


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

Форматирование на основе массивов


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


Собственные операторы извлечения и вставки

Поскольку основанные на массивах потоки продолжают оста­ваться потоками, то можно создавать собственные функции извлечения и вставки в точности тем же способом, что и для потоков других типов. Например, в следующей программе создается класс plot, поддерживающий координаты X и Y точек в двумерном пространстве. Перегруженный для этого клас­са оператор вставки отображает положение точки. Для простоты область изменения координат X и Y ограничена пределами от 0 до 5.

#include <strstrea.h>

#include <iostream.h>

const int size=5;

class plot

{

int x, y;

public:

plot(int i, int j)

{

if(i>size) i = size;

if(i<0) i=0;

if(j>size) j = size;

if(j<0) j=0;

x=i; y=j;

}

friend ostream& operator<<(ostream &stream, plot p);

}

ostream& operator<<(ostream &stream, plot p)

{

stream << p.x << “ “ << p.y << “\n”;

return stream;

}

int main()

{

plot a(2, 3), b(1, 1);

cout << "Output using cout:\n";

cout << a << “\n” << b << "\n\n";

char str[200];

ostrstream outs(str, sizeof(str));

outs << а << b << ends;

cout << "Output using in-RAM formatting:\n";

cout << str;

}

Эта программа выведет следующий результат:

Output using cout:

2 3

1 1

Output using in-RAM formatting:

2 3

1 1

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



Одним из распространенных применений форматирования на основе массивов служит конст­руирование строки, используемой в качестве входа или функции стандартной библиотеки, или какой-то другой внешней функции. Например, может потребоваться создать строку, которая будет передана функции strtok() для синтаксического разбора. Функция strtok() разбивает стро­ку на ее элементы. Другим применением ввода/вывода на основе массивов служат текстовые ре­дакторы, выполняющие сложные операции форматирования. Часто проще использовать конст­рукции форматированного ввода/вывода C++ на основе массивов для построения сложной строки, чем использовать для этого «подручные» средства.



<== предыдущая лекция | следующая лекция ==>
Использование динамических массивов | Функции-шаблоны


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


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

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

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


 


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

 
 

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

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