Ункцґ» стандартного введеннЯ/виведеннЯ
„алґ наведенґ основнґ функцґ» стандартного введеннЯ/виведеннЯ мови 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 ();