Форматування даних в програмах C++
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
МНС Украiни
Львiвський Державний Унiверситет Безпеки ЖиттСФдiяльностi
Реферат на тему:
тАЭ Форматування даних в програмах C++тАЭ
Пiдготував
студент групи РЖБ-21
Горон Роман
Львiв 2009
Вступ
Формати представлення що виводиться iнформацii та правила вiдтворення даних при введеннi можуть бути змiненi програмiстом за допомогою прапорiв форматування. Цi прапори успадкованi всiма потоками з даного класу ios. Прапори форматування реалiзованi у виглядi окремих фiксованих бiтiв i зберiгаються в protected компонентi класу long x_flags. Для доступу до них СФ вiдповiднi public функцii.
Пiд час введення-виведення можна виконувати форматування даних.
Щоб використовувати операцii>> i <<з даними користувача типiв, що визначаються користувачем, необхiдно розширити дiю цих операцiй, ввiвши новi операцii-функцii. Першим параметром операцii - функцii маСФ бути посилання на обСФкт потокового типу, другий - посилання або обСФкт для користувача типу. У файлi iostream.h визначенi наступнi обСФкти, повязанi з стандартними потоками введення-виводу:
cin - обСФкт класу istream, повязаний зi стандартним буферiзiрованним вхiдним потоком;
cout - обСФкт класу ostream, повязаний зi стандартним буферизуСФрованным вихiдним потоком;
cerr - не буферiзiрованний вихiдний потiк для повiдомлення про помилки;
clog - буферiзiрованний вихiдний потiк для повiдомлення про помилкиках.
Форматування.
БезпосереднСФ застосування операцiй введення до стандартним потокам cout, cin, cerr, clog для даних базових типiв привадит до використання "замовчуваних" форматiв зовнiшнього представлення пересилаються значень.
Крiм прапорiв форматування використовуються наступнi protected компонентнi данi класу ios:
int x_width - мiнiмальна ширина поля виводу.
int x_precision - точнiсть подання дiйсних чисел (колiкiсть цифр дробовоi частини) при виведеннi;
int x_fill - символ-заповнювач при виведеннi, пробiл - за умовчанням.
Для отримання (установки) значень цих полiв використовуються следмуть компонентнi функцii:
int width ();
int width (int);
int precision ();
int precision (int);
char fill ();
char fill (char);
Манiпулятори.
Незважаючи на гнучкiсть i великi можливостi управлiння форматами за допомогою компонентних функцiй класу ios, iх застосування достаточно громiздко. Бiльш простий спосiб змiни параметрiв i прапорiв форматування забезпечують манiпулятори.
Манiпуляторами називаються спецiальнi функцii, що дозволяють модифiкованi роботу потоку. Особливiсть манiпуляторiв полягаСФ в те, що iх можна використовувати в якостi правого операнда операцii>> або <<. Як лiвого операнда, як зазвичай, використовуСФться потiк (посилання на потiк), i саме на цей потiк впливаСФ манiпулятор.
Для забезпечення роботи з манiпуляторами в класах istream i ostream СФ такi перевантаженi функцii operator. istream & operator>> (istream & (* _f) (istream &)); ostream & operator , в якому визначено вбудованi манiпулятори.
Визначення користувальницьких манiпуляторiв.
Порядок створення призначеного для користувача манiпулятора з параметрами, наприклад для висновку, наступний:
1. Визначити клас (my_manip) з полями: параметри манiпулятора, вказiвник на функцiю типу ostream & (* f) (ostream &, );
2. Визначити конструктор цього класу (my_manip) з iнiцiалiзаСФю полiв.
3. Визначити, в цьому класi дружню функцiю - operator <<.
Ця функцiя в якостi правого аргументу приймаСФ обСФкт класу my_manip, лiвого аргументу (операнда) потiк ostream i повертаСФ потiк ostream як результат виконання функцii * 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. Визначити функцiю типу * f (fmanip), що приймаСФ потiк i параметри манiпулятора i повертаються потiк. Ця функцiя власне i виконуСФ форматування. Наприклад, 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;)
Масовий iмпорт i експорт даних за допомогою програми bcp
У цьому роздiлi представлений огляд використання програми bcp для експорту даних з будь-якого мiiя розташування до бази даних SQL Server, в якiй може застосовуватися iнструкцiя SELECT, включаючи секцiонiрованние подання.
Програма bcp (bcp.exe) являСФ собою iнструмент командного рядка, що використовуСФ API-iнтерфейс програми масового копiювання (BCP). Програма bcp виконуСФ наступнi завдання:
масовий експорт даних з таблицi SQL Server у файл даних;
масовий експорт даних iз запиту;
масовий iмпорт даних з файлу даних до таблицi SQL Server;
створення файлiв форматування.
Програма bcp викликаСФться командою bcp. Застосування команди bcp для масового iмпорту вимагаСФ розумiння схеми таблицi i типiв даних ii стовпцiв (якщо не використовуСФться заздалегiдь створений файл форматування).
Програма bcp може експортувати данi з таблицi SQL Server у файл даних для використання iншими програмами. Програма також може iмпортувати данi в таблицю SQL Server з iншоi програми, звичайно iншоi системи управлiння базою даних (СУБД). Спочатку виконуСФться експорт даних з iншоi програми у файл даних, а потiм окремою