Форматування даних в програмах C++

МНС України

Львівський Державний Університет Безпеки Життєдіяльності

	

	

	

	

	

	

	

	

	

	

	

	Реферат на тему:

	” Форматування даних в програмах C++”





	Підготував 

	студент групи ІБ-21

 Горон Роман

















	Львів 2009


Вступ



Формати представлення що виводиться інформації та правила відтворення даних при введенні можуть бути змінені програмістом за допомогою прапорів форматування. Ці прапори успадковані всіма потоками з даного класу ios. Прапори форматування реалізовані у вигляді окремих фіксованих бітів і зберігаються в protected компоненті класу long x_flags. Для доступу до них є відповідні public функції. 

	
Під час введення-виведення можна виконувати форматування даних. 

	Щоб використовувати операції>> і <<з даними користувача типів, що визначаються користувачем, необхідно розширити дію цих операцій, ввівши нові операції-функції. Першим параметром операції - функції має бути посилання на об'єкт потокового типу, другий - посилання або об'єкт для користувача типу.  У файлі iostream.h визначені наступні об'єкти, пов'язані з стандартними потоками введення-виводу: 

	cin - об'єкт класу istream, пов'язаний зі стандартним буферізірованним вхідним потоком; 

	cout - об'єкт класу ostream, пов'язаний зі стандартним буферизуєрованным вихідним потоком; 

	cerr - не буферізірованний вихідний потік для повідомлення про помилки; 

	clog - буферізірованний вихідний потік для повідомлення про помилкиках. 

	Форматування. 

	Безпосереднє застосування операцій введення <<і виведення>> до стандартним потокам cout, cin, cerr, clog для даних базових типів привадит до використання "замовчуваних" форматів зовнішнього представлення пересилаються значень. 

	Крім прапорів форматування використовуються наступні protected компонентні дані класу ios: 

	int x_width - мінімальна ширина поля виводу. 

	int x_precision - точність подання дійсних чисел (колікість цифр дробової частини) при виведенні; 

	int x_fill - символ-заповнювач при виведенні, пробіл - за умовчанням. 

	Для отримання (установки) значень цих полів використовуються следмуть компонентні функції: 

	int width (); 

	int width (int); 

	int precision (); 

	int precision (int);

char fill (); 

char fill (char); 

Маніпулятори. 

Незважаючи на гнучкість і великі можливості управління форматами за допомогою компонентних функцій класу ios, їх застосування достаточно громіздко. Більш простий спосіб зміни параметрів і прапорів форматування забезпечують маніпулятори. 

Маніпуляторами називаються спеціальні функції, що дозволяють модифіковані роботу потоку. Особливість маніпуляторів полягає в те, що їх можна використовувати в якості правого операнда операції>> або <<. Як лівого операнда, як зазвичай, використовується потік (посилання на потік), і саме на цей потік впливає маніпулятор. 

Для забезпечення роботи з маніпуляторами в класах istream і ostream є такі перевантажені функції operator.  istream & operator>> (istream & (* _f) (istream &));  ostream & operator <<(ostream & (* _f) (ostream &));  При використанні маніпуляторів слід включити заголовкові файл <iomanip.h>, в якому визначено вбудовані маніпулятори. 

Визначення користувальницьких маніпуляторів. 

Порядок створення призначеного для користувача маніпулятора з параметрами, наприклад для висновку, наступний: 

1. Визначити клас (my_manip) з полями: параметри маніпулятора, вказівник на функцію типу  ostream & (* f) (ostream &, <параметри маніпулятора>); 

2. Визначити конструктор цього класу (my_manip) з ініціалізаєю полів. 

3. Визначити, в цьому класі дружню функцію - operator <<. 

Ця функція в якості правого аргументу приймає об'єкт класу my_manip, лівого аргументу (операнда) потік ostream і повертає потік ostream як результат виконання функції * f. Наприклад,  typedef far ostream & (far * PTF) (ostream &, int, int, char);  class my_man (  int w; int n; char fill;  PTF f;  public:  / / конструктор  my_man (PTF F, int W, int N, char FILL): f (F), w (W), n (N), fill (FILL) ()  friend ostream & operator <<(ostream &, my_man);  );  ostream & operator <<(ostream & out, my_man my)  (return my.f (out, my.w, my.n, my.fill);) 

4. Визначити функцію типу * f (fmanip), що приймає потік і параметри маніпулятора і повертаються потік. Ця функція власне і виконує форматування. Наприклад,  ostream & fmanip (ostream & s, int w, int n, char fill) (s.width (w); s.flags (ios:: fixed); s.precision (n); s.fill (fill); return s;)

Масовий імпорт і експорт даних за допомогою програми bcp 

У цьому розділі представлений огляд використання програми bcp для експорту даних з будь-якого місця розташування до бази даних SQL Server, в якій може застосовуватися інструкція SELECT, включаючи секціонірованние подання. 

Програма bcp (bcp.exe) являє собою інструмент командного рядка, що використовує API-інтерфейс програми масового копіювання (BCP). Програма bcp виконує наступні завдання: 

масовий експорт даних з таблиці SQL Server у файл даних; 

масовий експорт даних із запиту; 

масовий імпорт даних з файлу даних до таблиці SQL Server; 

створення файлів форматування. 

Програма bcp викликається командою bcp. Застосування команди bcp для масового імпорту вимагає розуміння схеми таблиці і типів даних її стовпців (якщо не використовується заздалегідь створений файл форматування). 

Програма bcp може експортувати дані з таблиці SQL Server у файл даних для використання іншими програмами. Програма також може імпортувати дані в таблицю SQL Server з іншої програми, звичайно іншої системи управління базою даних (СУБД). Спочатку виконується експорт даних з іншої програми у файл даних, а потім окремою операцією дані копіюються з файлу даних до таблиці SQL Server. 

Програма bcp надає ключі для вказівки типу даних файлу даних та інших відомостей. Якщо такі ключі не задані, програма виводить запрошення для введення цих відомостей, наприклад для типу полів даних у файлі даних. Потім команда запитує, чи потрібно створити файл форматування, що містить дані відповіді. Щоб забезпечити гнучкість для майбутніх операцій масового імпорту та експорту, часто використовується файл форматування. У наступних командах bcp можна вказати файл форматування для еквівалентних файлів даних. Додаткові відомості див Вказівка форматів даних для сумісності з допомогою програми bcp. 

Сімейство класів iostream забезпечує операції вводу-виводу між програмою і терміналом. Сімейство fstream використовує такий же інтерфейс для забезпечення операції вводу/ виводу між програмою і файлом. Крім того бібліотека С++ має сімейство класів sstream, яке використовує такий же інтерфейс для забезпечення вводу/виводу між програмою і об’єктом класу string. Це означає, що ті самі методи класу ostream, якы використовувались при роботі з об’єктом cout, можна використати і для передачі інформації в об’єкт класу string, а методи класу iostream, наприклад getline(), - для читання інформації із об’єкта класу string. Процес читання відформатованої інформації із об’єкту string називається внутрішнім форматуванням. Далі ми коротко розглядаємо його властивості.

Заготовочний файл sstream визначає класс ostreangstream породжений від класу ostream. Для об’єкту ostreangstream можна користуватись такими самими методами, що і для об’єкту cout, можна зробити наступне:

Ostreangstream outstr;

Double price = 55.00;

Char * ps = “for a copy of the draft C++ kstandard!”;

Outstr.precision (2);

Outstr << fixed;	

Outstr << “Pay only $” << price << ps << end;

Відформатований текст направляється в буфер, причому об’єкт виконує динамічний розподіл памяті, щоб збільшити буфер при необхідності. Клас ostreangstream має функцію-елемент з іменем str(), яка повертає об’єкт класу string, ініціалізований з вмістимістю буфера:

// повертає рядок з відформатованою інформацією

String mesg = outstr. Str();

При використанні методу str() обєкт “заморожується” – після цього у нього вже не можна нічого записати.


СПИСОК ЛІТЕРАТУРИ:



				Станек У. Windows Server 2003. Справочник администратора. – М: «Русская редакция», 2004.

				Несвижский В. Программирование аппаратных средств в Windows. – М:«БХВ-Петербург», 2004.

				Финогенов К.Г. Самоучитель по системным функциям MS-DOS – М: «Радио и связь»,1995. – 379 с.

				Корпорация Cisco Systems Inc. Программа сетевой академии Cisco CCNA 1 и 2. Воспомагательное руководство. 3-е изд.: Пер. с англ.: Издательский дом «Вильямс», 2005. – 1168 с.

				Таненбаум Э. Компьютерные сети. 4-е изд. – СПб.: Питер, 2003. – 992 с.

				Уолл Д и др. Использование World Wide Web. 2-е издание: Пер. с англ. – К: Диалектика, 1997. - 432с.