§ 10. Тэкставыя файлы

10.1. Каманды для работы з тэкставымі файламі

У цяперашні час камп’ютары апрацоўваюць вялізныя масівы вялікіх даных, увод такіх даных з клавіятуры запатрабаваў бы нашмат больш часу, чым іх апрацоўка. Таму ў сучасных мовах праграміравання прадугледжана магчымасць чытаць даныя з файла і запісваць вынікі ў файл. Адзін з самых простых фарматаў файлаў — гэта тэкставыя файлы, якія захоўваюць толькі сімвалы з кодавай табліцы. Ствараць і праглядаць такія файлы можна з дапамогай праграмы Блокнот.

Пры рабоце з тэкставымі файламі змяняецца толькі фармат уводу і вываду даных. Алгарытмічны складальнік працэсу рашэння задачы не змяняецца. Звычайна з дапамогай праграмы Блокнот ствараецца файл, які змяшчае ўваходныя даныя — тыя, якія карыстальнік мог увесці з клавіятуры. Пасля завяршэння работы праграма выводзіць вынік не ў кансоль, а ў файл, які можна адкрыць у Блокноте. Захоўваюцца файлы ў папцы праекта (прыклад 10.1).

Каб праграма магла працаваць з файламі, неабходна паказаць імёны гэтых файлаў і вызначыць, для якой мэты патрэбен файл — для ўводу ці для вываду.

Для работы з файламі выкарыстоўваюцца спецыяльныя тыпы даных, якія называюцца патокамі. Паток ifstream служыць для работы з файламі ў рэжыме чытання (увод даных). Паток ofstream служыць для работы з файламі ў рэжыме запісу (вывад даных). У праграмах на C++ пры рабоце з тэкставымі файламі неабходна падключаць бібліятэку fstream (прыклад 10.2).

Прыклад 10.1. Файлы input.txt (для ўводу даных) і output.txt (для вываду) у папцы праекта.

Прыклад 10.2. Каманды для работы з файламі:

#include <fstream>

 

using namespace std;

 

int main()

{

  ifstream fin("input.txt");

  ofstream fout("output.txt");

  …

  return 0;

}    

Каманда ifstream fin("input.txt") звязвае файлавы паток з імем fin і тэкставы файл input.txt, прызначаны для чытання даных з яго. У праграме імя файлавага патоку fin будзе выкарыстоўвацца тады, калі трэба ўвесці даныя (па сутнасці, fin будзе выкарыстоўвацца замест cin).

Каманда ofstream fout("output.txt") звязвае файлавы паток з імем fout і тэкставы файл output.txt, прызначаны для запісу даных у яго. У праграме імя файлавага патоку fout будзе выкарыстоўвацца тады, калі трэба вывесці даныя (па сутнасці, fout будзе выкарыстоўвацца замест cout).

Імя файлавага патоку з’яўляецца ідэнтыфікатарам, карыстальнік можа выбраць яго адвольна.

Калі неабходна працаваць з некалькімі файламі адначасова, то кожны файл звязваюць са сваім патокам для чытання або запісу даных.

Калі ўзнікае неабходнасць спачатку запісаць што-небудзь у файл, а затым прачытаць з яго, то трэба спярша закрыць паток для чытання і толькі потым звязваць файл са струменем для запісу. Для закрыцця выкарыстоўваецца каманда fin.close();