Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/studb20/public_html/index.php on line 4
 2.10.8 Файлові потоки - Програмування С, С++теорія та практика (частина 2) - Studbook

Програмування С, С++теорія та практика (частина 2)

2.10.8 Файлові потоки

Стандартна бібліотека С++ містить три класи файлового введення/виведення :

і/зґегат                          - клас вхідних файлових потоків

о/зґгеат                       - клас вихідних файлових потоків

/зґгеат           - клас двоспрямованих файлових потоків

Кожний з перерахованих класів містить конструктори, які дають можливість створювати об’єкти цих класів. Розглянемо можливі форми виклику конструкторів :

Конструктори без параметрів створюють об’єкт відповідного класу без зв’язування його з файлом.

іІ5Ігеат();

оІ5Ігеат();

І5ігеат();

Конструктори з параметрами створюють об’єкт відповідного класу, відкривають файл із вказаним ім’ям і зв’язують його з об’єктом. іі5ігеат(соп5і сііаг *пате, іпі тосіе = іо5::іп); оі5ігеат(соп5і сііаг *пате, іпі тоСе = іо5::оиі | іо5::ігипс); І5ігеат(сопі сііаг *пате, іпі тоСе = іо5::іп | іо5::оиі);

Перший параметр в наведених конструкторах - ім’я файла, другий параметр - режим відкриття файла. Можна встановлювати такі режими відкриття файлів:

епит ореп_тогіе {

іп     = 0x01, // відкрити для     читання

ои£    = 0x02, // відкрити для      запису

а£е    = 0x04, // встановити покажчик на  кінець файлу

арр    = 0x08, // відкрити для   додавання в       кінець   файлу

■Ьгипс = 0x10,   // якщо  файл існує, знищити

посгеа^е = 0x20,// якщо файл не існує, видати помилку погер1асе= 0x40, // якщо файл існує, видати помилку Ьіпагу = 0x80    // відкрити в бінарному режимі

} ;

Таблиця 2.10 ілюструє відповідність між бітовими масками класу /05 та режимами відкриття файла засобами зїйїо.к :

Таблиця 2.10. Зв'язок між бітовими масками класу юз та режимами відкриття файла засобами зМіо.й

<зМіо.Гі>

Ьіпагу

іп

оиі

ігипс

арр

“м”

 

 

+

 

 

“а”

 

 

+

 

+

“м”

 

 

+

+

 

“ г”

 

+

 

 

 

“г+”

 

+

+

 

 

“м+”

 

+

+

+

 

“мЬ”

+

 

+

 

 

“аЬ”

+

 

+

 

+

“мЬ”

+

 

+

+

 

“гЬ”

+

+

 

 

 

Ь

+

+

+

+

 

 

“м+Ь”

+

+

+

+

 

 

/ / Приклад виконує копіювання вмісту файла о1£і1е. 'Ьх'Ь // у файл / / пем£і1е. 'Ьх'Ь.

#іпс1ийе <£з^геаш.Ь> іп£ таіп()

{

сЬаг сЬ;

і£з£геат £1 ("ОЬБЕІЬЕ.ТХТ"); о£зїгеат £2 ("ИЕІлГЕІЬЕ.ТХТ");

і£ (!£1) сегг<<"Саппо£ ореп ОЬБЕІЬЕ.ТХТ £ог іпри£"; і£ (!£2) сегг<<"Саппо^ ореп МЕТлТЕІЬЕ.ТХТ £ог ои'Ьри'Ь"; мЬі1е (£2 && £1.де£(сЬ))

£2.ри£(сЬ); ге'Ьигп 0;

}

 

50