Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Ункцґ» стандартного введеннЯ/виведеннЯ




„алґ наведенґ основнґ функцґ» стандартного введеннЯ/виведеннЯ мови C.

”ункциЯ getchar()

”ормат функцґ»:

getchar();

”ункцґЯ вводить з клавґатури один символ ґ поверта№ його. ‡вертатисЯ до цґ№» функцґ» можна так:

char c; // або

int c;

c = getchar();

”ункциЯ putchar()

”ормат функцґ»:

putchar(c);

‚иводить значеннЯ змґнно» з (один символ) на стандартне вивґдний пристрґй.

”ункциЯ printf()

”ормат функцґ»:

printf(Control, arg1, arg2,..., argn);

–е функцґЯ форматного виводу. ‚иводить на екран вмґст arg1, arg2,..., Argn ґ поверта№ кґлькґсть виведених байтґв. Control - керуючий символьний рЯдок, в Якому знаходЯтьсЯ формати виводу на екран длЯ вґдповґдних аргументґв arg1, arg2,..., Argn, тобто перший формат - длЯ виведеннЯ arg1, другий - длЯ arg2 ґ т. д. ‚сґ символи, що знаходЯтьсЯ мґж форматами, виводЯтьсЯ один до одного, тобто не форматуютьсЯ. –е да№ можливґсть виведеннЯ додаткового тексту длЯ полґпшеннЯ читаностґ результату виводу.

”ормати виводу задаютьсЯ так: будь-Який формат почина№тьсЯ з символу '%' ґ закґнчу№тьсЯ одним ґз символґв форматуваннЯ:

- d - аргумент перетворитьсЯ до десЯткового виглЯду (з урахуваннЯм знака);

- o - аргумент перетворитьсЯ до восьмеричному беззнаковим увазґ;

- x - аргумент перетворитьсЯ в беззнакову шґстнадцЯткову форму (з символами a, b, c, d, e, f);

- • - аргумент перетворитьсЯ в беззнакову шґстнадцЯткову форму (з символами Ђ, B, C, D, E, F);

- U - аргумент перетворитьсЯ в беззнакову десЯткову форму;

- з - аргумент розглЯда№тьсЯ Як окремий символ;

- s - аргумент розглЯда№тьсЯ Як рЯдок символґв; символи рЯдка друкуютьсЯ до тих пґр, поки не буде досЯгнутий нульовий символ або не буде надруковано кґлькґсть символґв, вказане в специфґкацґ» точностґ (про специфґкатор точностґ скажемо далґ в цьому ж роздґлґ);

- е - аргумент розглЯда№тьсЯ Як змґнна типу float або double ґ перетворитьсЯ в десЯткову форму у експонентному виглЯдґ: [-]m.nnnnnn e[+-]xx, де довжина рЯдка з n визнача№тьсЯ вказаною точнґстю. ‡а замовчуваннЯм точнґсть дорґвню№ 6;

- E - те ж, що ґ e, але з символом E длЯ експоненти;

- f - аргумент розглЯда№тьсЯ Як змґнна типу float або double ґ перетворитьсЯ в десЯткову форму у виглЯдґ: [-] Mmm.nnnnnn, де довжина рЯдка з n визнача№тьсЯ вказаною точнґстю. ‡а замовчуваннЯм точнґсть дорґвню№ 6;

- g - використову№тьсЯ або формат %e, або %f: виберетьсЯ той формат, Який дасть зображеннЯ числа з меншою кґлькґстю знакґв з урахуваннЯм задано» точностґ. Ќезначущґ нулґ не друкуютьсЯ;

- G - те ж, що ґ g, але з E длЯ експоненти, Якщо використову№тьсЯ формат e;

- n - вказґвник на цґле зґ знаком;

- p - вхґдний аргумент виводитьсЯ Як вказґвник. ”ормат залежить вґд моделґ використовувано» пам'Ятґ. ‚ґн може бути виглЯду XXXX: YYYY або YYYY (тґльки змґщеннЯ).

Њґж межами формату виводу (вґд знаку % до символу-специфґкатора типу виведеного аргументу) знаходЯтьсЯ:

[Џрапорцґ] [ширина] [. ’очнґсть] [F | N | h | l | L]

Љвадратнґ дужки означають, що елемент, що входить в них, може бути вґдсутнґм длЯ Якогось формату. Ќаприклад, Якщо виводитьсЯ десЯткове число, то точнґсть длЯ нього не ма№ сенсу.

- Џрапорцґ визначають вирґвнюваннЯ виведеного значеннЯ (по правому чи лґвому краю полЯ виводу), знаки числа, десЯтковґ крапки, кґнцевґ нулґ, вґсґмковґ ґ шґстнадцЯтковґ префґкси. Џрапорцґ мають наступний сенс:

Ґ - (дефґс) - вирґвнюваннЯ результату по лґвому краю полЯ виводу (число буде притиснуте до лґво» межґ полЯ виводу) ґ заповненнЯ полЯ виводу праворуч пробґлами. џкщо цей прапор не заданий, результат вирґвню№тьсЯ по правому краю полЯ виведеннЯ, а простґр, що залишивсЯ злґва, заповню№тьсЯ пробґлами або нулЯми;

Ґ + - перетвореннЯ результату до виглЯду зґ знаком: результат завжди почина№тьсЯ зґ знака '+' або '-';

Ґ пробґл - Якщо значеннЯ невґд'№мне, замґсть плюса виводитьсЯ пробґл. „лЯ вґдХ№мних чисел виводитьсЯ мґнус;

Ґ # - вказу№, що аргумент повинен бути перетворений з використаннЯм альтернативно» форми. –е означа№, що Якщо прапорець # використову№тьсЯ разом з символом перетвореннЯ (форматуваннЯ), то при перетвореннґ аргументу длЯ символґв c, s, d, u, i, o, x, X символ # не вплива№ на результат. „лЯ символґв e, E, f результат завжди буде мґстити десЯткову точку, навґть Якщо за точкою не слґду№ нґЯких цифр (зазвичай десЯткова крапка з'ЯвлЯ№тьсЯ, Якщо за нею слґду№ цифра). „лЯ символґв g, G результат буде Як длЯ символґв e, E, але з тґ№ю вґдмґннґстю, що хвостовґ нулґ не будуть видалЯтисЯ.

џкщо заданґ ґ пробґл, ґ знак '+', то перевагу ма№ знак '+'.

- ‘пецифґкатор ширини визнача№ розмґр полЯ длЯ вихґдного значеннЯ.

?ирину можна задати двома способами: безпосередньо, рЯдком десЯткових цифр, ґ побґчно, через символ '*': в цьому випадку аргумент повинен мати тип int. џкщо длЯ завданнЯ ширини ви використову№те символ '*', то специфґкацґЯ ширини вказу№тьсЯ не в рЯдку Control, а в списку аргументґв перед вґдповґдним аргументом.

‘пецифґкатори ширини можуть бути такґ:

Ґ n - в цьому випадку виведетьсЯ не менше n символґв. џкщо в виведеному числґ символґв менше, нґж n, решта полЯ заповнитьсЯ пробґлами - праворуч, Якщо заданий прапорець, лґворуч - у противному випадку;

Ґ 0n (наприклад, 04) - буде виведено не менше n символґв. џкщо в виведеному числґ символґв менше, нґж n, решта полЯ заповнитьсЯ злґва нулЯми;

Ґ * (длЯ формату d) - Якщо длЯ завданнЯ ширини ви використову№те символ '*', то специфґкацґЯ ширини вказу№тьсЯ не в рЯдку Control, а в списку аргументґв перед тим аргументом, длЯ Якого вона визначена.

Џричому ширина ЯвлЯ№ собою окремий аргумент. Ќаприклад, виводимо число i = 2 по функцґ»:

printf("%*d\n", 5, i);

ђезультат буде пппп2 (де п - символ пробґлу). ’ут ширина задана рґвною 5 ґ вказана в списку аргументґв окремо, але перед тим аргументом, длЯ Якого вона визначена.

- ‘пецифґкатор точностґ зада№ число виведених символґв. ‡авданнЯ специфґкатора точностґ завжди почина№тьсЯ зґ знака точки, щоб вґдокремити його вґд специфґкатора ширини. џк ґ специфґкатор ширини, точнґсть може задаватисЯ двома способами:

Ґ безпосередньо - завданнЯм числа;

Ґ побґчно - вказґвкою символу '*'.

џкщо ви використову№те зґрочку длЯ специфґкатора точностґ, то специфґкацґЯ точностґ вказу№тьсЯ не в рЯдку Control, а в списку аргументґв перед вґдповґдним аргументом Як окремий аргумент (через кому).

Ђргумент, длЯ Якого вказу№тьсЯ специфґкацґЯ точностґ, може бути тґльки типу int.

џкщо ви використову№те зґрочку длЯ завданнЯ ширини або точностґ або длЯ завданнЯ обох специфґкацґй, то специфґкатор ширини повинен вґдразу слґдувати за специфґкатором точностґ: спочатку вказу№тьсЯ точнґсть, за нею - ширина. Ќаприклад, у виклику:

printf ("%. * d \n", 2, 5, i);

задана точнґсть 2 ґ ширина 5 длЯ цґлого числа. џкщо i = 5, то результат буде 05: точнґсть - головна у визначеннґ ширини полЯ виводу.

џк задавати точнґсть, видно з табл. 1.

Ќаприклад, длЯ j = 6.28 по printf ("%. F \n", j) отрима№мо результат - 6.

’аблица 1. ‡авданнЯ специфґкатора точностґ

‘пецифґкатор точностґ Ћпис
Ќе заданий ’очнґсть буде встановлена за замовчуваннЯм: Ґ 1 - длЯ форматґв d, o, u, x, X; Ґ 6 - длЯ форматґв e, E; Ґ всґ значущґ цифри - длЯ форматґв g, G; Ґ до ознаки кґнцЯ рЯдка - длЯ формату s; Ґ не дґ№ - длЯ формату c
  ’очнґсть встановлю№тьсЯ за умовчаннЯм - длЯ форматґв d, o, u, x. „есЯткова крапка не друку№тьсЯ длЯ форматґв e, E, f
n ‚иводитьсЯ n символґв або n десЯткових мґсць. џкщо в виведеному значеннґ символґв бґльше n, висновок може бути усґчений або заокруглений (це залежить вґд типу формату)
. (точка) „анґ виводЯтьсЯ Як цґлґ длЯ формату f

- Њодифґкатори розмґру, що задаютьсЯ у форматґ, визначають, Як функцґЯ ґнтерпрету№ аргумент. „ґЯ модифґкаторґв показано в табл. 2.

’аблицЯ 2. „ґЯ модифґкаторґв розмґру

‡наченнЯ ”ормат §нтерпретацґЯ
F p, s „алекий вказґвник
N n Ѓлизький вказґвник
h d, o, u, x, X short int
l d, o, u, x, X long int
l e, E, f, g, G double
L e, E, f, g, G long double
L d, o, u, x, X __int64
h c, C 1 символьний байт
l c, C 2 символьних байта
h s, S 1 строка символов по 1 байту на символ
h s, S 1 строка символов по 2 байта на символ

Ќаприклад, Якщо ми виводимо данґ типу long, ми повиннґ задавати разом з форматом d ґ модифґкатор типу l, тобто загальний виглЯд формату буде ld.

”ункциЯ scanf()

”ормат функцґ»:

scanf(Control, arg1, arg2,..., argn);

–е функцґЯ форматного введеннЯ з клавґатури. ‡дґйсню№ посимвольно введеннЯ даних з клавґатури, перетворю№»х у вґдповґдностґ з форматом длЯ кожного значеннЯ, зазначеному в керуючґй (форматно») символьно» рЯдку Control, ґ результат перетвореннЯ запису№ в аргументи arg1, arg2,..., argn. ‘енс рЯдки Control той же, що ґ длЯ функцґ» printf (). ’ак Як arg1, arg2,..., argn - це вихґднґ параметри функцґ», то при зверненнґ до функцґ» вони повиннґ задаватисЯ сво»ми адресами: ґмена масивґв задаютьсЯ ґменами, т. к. ґм'Я масиву - це покажчик на його перший елемент, а тґ аргументи, Якґ не № покажчиками, задаютьсЯ Як & arg.

”орматна рЯдок Control - це символьний рЯдок, що мґстить три типи об'№ктґв: незначущґ символи, значущґ символи ґ специфґкацґ» формату.

Ќезначущґ символи - це пробґл, знак табулЯцґ» (\t), символ переходу на новий рЯдок (\n). џк тґльки функцґЯ зустрґча№ незначущий символ в рЯдку формату, вона зчиту№, але не зберґга№ всґ наступнґ незначущґ символи до тих пґр, поки не зустрґнетьсЯ перший значущий символ (тобто пропуска№ незначущґ символи). ‡начущґ символи - це все символи коду ASCII, крґм символу '%'. џкщо функцґЯ зустрґча№ в форматно» рЯдку значущий символ, вона його зчиту№, але не зберґга№. ‘пецифґкацґЯ формату функцґ» ма№ виглЯд:

%[*][ширина][F/N] [h/l] символ_формата

ЏґслЯ символу початку формату '%' в певному порЯдку слґдують ґншґ специфґкацґ»:

- * - це необов'Язковий символ придушеннЯ введеннЯ: весь вхґдний потґк функцґЯ розглЯда№ Як сукупнґсть полґв введеннЯ - значущих символґв. џкщо в специфґкацґ» вказано символ '*', то все поле, Яке повинне в даний момент оброблЯтисЯ функцґ№ю по заданому формату, пропуска№тьсЯ.

‚веденнЯ вґдбува№тьсЯ так: у вґдповґдностґ зґ специфґкатором ширини першого формату з вхґдного потоку вибира№тьсЯ чергове поле введеннЯ (’обто значущґ символи до першого незначущого), Яке ґнтерпрету№тьсЯ у вґдповґдностґ з форматом ґ запису№тьсЯ у вґдповґдний аргумент. џкщо при цьому запитана ширина виЯвиласЯ меншою полЯ введеннЯ, то залишок полЯ оброблЯ№тьсЯ функцґ№ю по наступному формату. џкщо запитана ширина виЯвиласЯ бґльше полЯ введеннЯ, то все поле введеннЯ оброблЯ№тьсЯ за даним форматом. џкщо ж в оголошеннґ формату присутнґй символ придушеннЯ введеннЯ '*', то все поле, призначене длЯ обробки даним форматом, пропуска№тьсЯ.

- Њодифґкатори розмґру аргументу ґ символи форматуваннЯ функцґ» scanf () аналогґчнґ модифґкаторам ґ символам форматуваннЯ функцґ» printf ().

ђозглЯнемо приклад роботи функцґ» scanf (). Џрипустимо, задано:

int i; float x; char m[100];

scanf("%2d %f %*d %2s", &i, &x, m);

Ќа клавґатурґ набира№мо послґдовнґсть:

56789 0123 45а72

џк буде йти введеннЯ?

“ прикладґ № три полЯ введеннЯ: 56789, 0123 ґ 45а72. ”ункцґЯ у вґдповґдностґ з першим форматом (%2d) вибира№ з першого полЯ першґ два символу. ”ункцґЯ ґнтерпрету№»х Як десЯткове число ґ привласню№ значеннЯ першому аргументу: i = 56. “ першому полґ залишилисЯ необробленими символи 789. ‚они потраплЯють в роботу функцґ» по другому формату %f. „ругий аргумент отрима№ значеннЯ x = 789. „алґ повинне оброблЯтисЯ поле 0123 по третьому формату, але в ньому № символ придушеннЯ. ’ому поле пропуска№тьсЯ ґ почина№ оброблЯтисЯ поле 45а72 за форматом %2s. ‡ цього полЯ будуть обранґ тґльки першґ два символи ґ рЯдок m отрима№ значеннЯ '45'.

”ункциЯ sprintf()

”ормат функцґ»:

sprintf(string, Control, arg1, arg2,..., argn);

–Я функцґЯ аналогґчна printf (), за винЯтком того, що результат сво№» роботи вона виводить не на стандартний пристрґй виводу, а в рЯдок string.

–е дозволЯ№ збирати в один рЯдок данґ абсолютно рґзних типґв.

”ункциЯ sscanf()

”ормат функцґ»:

sscanf(string, Control, arg1, arg2,..., argn);

–Я функцґЯ аналогґчна scanf (), за винЯтком того, що вхґднґ данґ длЯ»» роботи надходЯть не зґ стандартного пристрою введеннЯ, а з рЯдка string. –е дозволЯ№ видґлЯти в рЯдку рґзнґ групи даних абсолютно рґзних типґв ґ помґщати»х в окремґ змґннґ.

”ункциЯ cprintf()

”ормат цґ№» функцґ» совпадает с форматом функции printf():

сprintf(Control, arg1, arg2,..., argn);

Џараметри аналогґчнґ параметрам printf (). Ђле длЯ забезпеченнЯ роботи цґ№» функцґ» слґд пґдключити до програми файл conio.h, виконавши:

#include <conio.h>

џкщо функцґЯ printf () виводить данґ туди, куди призначено stdout (див. початок розд. "‘тандартний ввґд / вивґд"), то функцґЯ cprintf () завжди виводить данґ на консоль (на це вказу№ символ 'з' на початку»» ґменґ), тобто на екран.

Ќа вґдмґну вґд printf (), функцґЯ cprintf () не переводить символ '\n' в пару "\r \n" - поверненнЯ каретки та переведеннЯ рЯдка (замґсть '\n' треба вказувати обидва цих символу). Љрґм того, символи табулЯцґ» '\t' не перетворюютьсЯ в пробґли.

–ю функцґю не рекоменду№тьсЯ використовувати длЯ додаткґв Win32 або Win32 GUI. Ђле»» можна використовувати длЯ видачґ на екран кольорових повґдомлень. „лЯ цього треба скористатисЯ функцґЯми textcolor () (встановити колґр тексту) ґ textbackground () (встановити колґр фону). Љольори задаютьсЯ в №диних аргументах цих функцґй, виходЯчи з табл. 3.

’аблицЯ 3. ‡авданнЯ кольору

Љолґр ‘имвольна константа ‡наченнЯ аргумента
—орний BLACK  
‘инґй BLUE  
‡елений GREEN  
Ѓлакитний CYAN  
—ервоний RED  
Џурпурний MAGENTA  
Љоричневий BROWN  
‘вґтло-сґрий LIGHTGRAY  
’емно-сґрий DARKGRAY  
‘вґтло-синґй LIGHTBLUE  
‘вґтло-зелений LIGHTGREEN  
‘вґтло-блакитний LIGHTCYAN  
‘вґтло-червоний LIGHTRED  
‘вґтло-пурпурний LIGHTMAGENTA  
†овтий YELLOW  
Ѓґлий WHITE  
ЊиготґннЯ кольору BLINK  

џк аргумент можна брати Як символґчнґ константи, так ґ»х числовґ значеннЯ.

™об задати, наприклад, блиманнЯ кольору, слґд виконати:

textcolor(CYAN + BLINK);

або:

textcolor(3 + 128);

Ќаведемо приклад програми з функцґ№ю cprintf () (лґстинг 5).

Ґстинг 5

//--------------------------------------------------------------------#include <vcl.h>

#include <conio.h>

#include <stdio.h>

int main(void) {

/* Џриклад 1: обов'Язкове використаннЯ символу поверненнЯ каретки (\r) ґ символу перекладу рЯдка (\n) */

/* Ћчистка екрану */

clrscr ();

/* ‘твореннЯ вґкна длЯ тексту */

window (10, 10, 80, 25);

/* ‚иведеннЯ тексту у вґкно */

cprintf ("Hello world \ r \ n");

/* ‡атримка: очґкуваннЯ введеннЯ з клавґатури */

getch ();

/* Џриклад 2: виведеннЯ 9-ти рЯдкґв з рґзними кольорами тексту ґ фону */

int i, j;

clrscr ();

for (i = 0; i <9; i + +) // 9 кольорґв тексту {

for (j = 0; j <80; j++)

cprintf ("C");

printf ("\ n");

textcolor (i + 1); // колґр тексту

textbackground (i); // колґр фону

}

getch ();

clrscr ();

// Џриклад 3: миготґннЯ

textbackground (YELLOW);

textcolor (CYAN + BLINK); // миготґннЯ

cprintf ("Hello! \r \n");

getch ();

return 0;

}

”ункциЯ gets()

”ормат функцґ»:

gets(s);

‚водить рЯдок символґв з клавґатури ґ запису№ його в рЯдок s, Який може бути оголошений Як char *s або char s[].

”ункциЯ puts()

”ормат функцґ»:

puts(s);

‚иводить вмґст рЯдка s на пристрґй стандартного виводу (екран).

ђЯдок s може бути оголошений Як char * s або char s [].

”ункциЯ cputs()

”ормат функцґ»:

сputs(s);

‚иводить вмґст рЯдка s на екран (s може бути оголошена Як char * s або char s []). –ю функцґю можна використовувати длЯ виводу на екран кольорових текстґв. Љолґр виведених символґв зада№тьсЯ за допомогою функцґ» textcolor (), а колґр фону - функцґ№ю textbackground () (див. також коментар до функцґ» cprintf ()). „лЯ роботи функцґ» треба пґдключити файл conio.h.

”ункциЯ gotoxy()

”ормат функцґ»:

gotoxy(x, y);

Џереводить курсор у точку з координатами (x, y) в поточному вґкнґ на екранґ, де х - номер стовпцЯ екрану, y - номер рЯдка екрана. Ћбидвґ змґннґ повиннґ бути описанґ Як int (не в пґкселах!). „лЯ роботи функцґ» треба пґдключити файл conio.h. Џриклад програми з функцґ№ю gotoxy () приведений в лґстингу 6.

Ґстинг 6

//--------------------------------------------------------------------#include <vcl.h>

#pragma hdrstop

#include <conio.h>

//--------------------------------------------------------------------#pragma argsused

int main(int argc, char* argv[]) {

clrscr();

gotoxy(35, 12);

cprintf("Hello, world");

getch();

}

”ункциЯ clrscr()

”ормат функции:

clrscr();

Ћчища№ екран ґ зафарбову№ його кольором, заданим функцґ№ю textbackground (). Џриклад програми з цґ№ю функцґ№ю приведений в лґстингу 7.

Ґстинг 7

//--------------------------------------------------------------------#include <vcl.h>

#pragma hdrstop

#include <conio.h>

//--------------------------------------------------------------------#pragma argsused

int main(int argc, char* argv[]) {

textcolor(YELLOW);

textbackground(YELLOW);

clrscr();

gotoxy(35, 12);

cprintf("Hello, world");

getch();

}

”ункциЯ window()

”ормат функции:

window(x1, y1, x2, y2);

”ункцґЯ створю№ вґкно на екранґ, де (x1, y1) - координати лґвого верхнього кута вґкна, (x2, y2) - правого нижнього. ‚сґ параметри повиннґ бути описанґ Як int.

‚веденнЯ/введеннЯ у мовґ ‘++

Агальнґ положеннЯ

‚веденнЯ ґ виведеннЯ в ‘++ органґзований за допомогою так званих поточних класґв, що мґстЯть данґ ґ методи роботи з файлами по введенню/виведенню.

Џотоковґ класи походЯть вґд спґльного предка - класу ios ґ тому успадковують його функцґональнґсть. ™об почати писати програму з використаннЯм введеннЯ/виведеннЯ на мовґ ‘++, слґд обов'Язково виконати в програмґ:

#include <fstream>

Љлас fstream № нащадком класґв istream ґ ostream. –ґ ж класи № батьками класґв ifstream ґ оfstream. Љлас fstream використову№тьсЯ длЯ органґзацґ» введеннЯ/виведеннЯ (тобто читаннЯ-запису) в один ґ той же файл.

Љласи ifstream, оfstream - длЯ органґзацґ» вґдповґдно введеннЯ (читаннЯ) файлу ґ виведеннЯ (записи в файл). “ свою чергу, екземплЯрами класґв istream, ostream № cin, cout, cerr, за допомогою Яких здґйсню№тьсЯ так зване стандартне введеннЯ/виведеннЯ - введеннЯ зґ стандартного ввґдного пристрою, Яким за замовчуваннЯм № клавґатура, ґ виведеннЯ на стандартний вивґдний пристрґй, Яким за замовчуваннЯм № екран. ’аким чином, включеннЯ в програму класу fstream виЯвлЯ№тьсЯ достатнґм длЯ органґзацґ» Як стандартного, так ґ файлового введеннЯ/виведеннЯ.

”айлове введеннЯ/виведеннЯ органґзоване за допомогою перевизначених в потокових класах операцґй включеннЯ (<<) та вилученнЯ (>>). ђанґше ми бачили, що це операцґ» зсуву влґво ґ зсуву вправо бґтґв у змґннґй типу int, але в поточних класах ‘++ вони знайшли нову функцґональнґсть.

™об працювати з файлом, його спочатку слґд вґдкрити - зв'Язати зґ спецґальною структурою, в Якґй задаютьсЯ характеристики файлу (розмґр буфера введеннЯ/виведеннЯ, стан файлу, останнґй прочитани» запис ґ т. п.). ‡в'Язок цей викону№тьсЯ за допомогою функцґ» open (), що входить в один з класґв, Який визнача№ введеннЯ/виведеннЯ (fstream, istream, ostream). ’ому, щоб виконати таку функцґю, слґд спочатку створити екземплЯр вґдповґдного класу, щоб отримати доступ до цґ№» функцґ». џкщо ми, наприклад, хочемо виконувати виведеннЯ у файл (тобто запис у нього), то слґд створити екземплЯр класу ostream:

ostream exp;

ґ потґм виконати функцґю exp.open (). “ дужках повиннґ бути вказанґ параметри цґ№» функцґ»: ґм'Я файлу ґ спосґб вґдкриттЯ файлу, в Якому задаютьсЯ вґдомостґ про те, Як користувач збира№тьсЯ працювати з файлом: читати його, писати в нього або робити щось ще.

ЏґслЯ того Як файл вґдкритий длЯ читаннЯ або запису, використовують операцґ» включеннЯ-вилученнЯ (<<, >>). џкщо використовувати приклад з примґрником exp класу ostream, то можна записати, наприклад:

exp << "рЯдок тексту" << i << j << endl;

’ут i, j - деЯкґ змґннґ (наприклад, int i; float j;), endl - кґнець виводу ґ перехґд на новий рЯдок.

ЏґслЯ того Як робота з файлом закґнчено, слґд закрити файл, щоб розґрвати зв'Язок з тґ№ю структурою, з Якою файл був пов'Язаний при його вґдкриттґ. –е необхґдно, щоб дати можливґсть ґншим файлам "вґдкриватисЯ".

–ей акт викону№тьсЯ за допомогою методу close () того ж екземплЯра класу, Який ми створювали, щоб виконати функцґю open (). “ нашому випадку слґд було б написати:

exp.close ();





Поделиться с друзьями:


Дата добавления: 2016-09-06; Мы поможем в написании ваших работ!; просмотров: 5386 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

В моем словаре нет слова «невозможно». © Наполеон Бонапарт
==> читать все изречения...

2217 - | 2180 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.015 с.