Како читати и писати у датотеку на Ц ++

How Read Write File C



У овом чланку ћемо вам показати како читати и писати у датотеку у програмском језику Ц ++ користећи неколико примера. Да бисмо разумели операције датотека Ц ++, попут читања и писања, прво морамо разумети концепт тока у Ц ++.

Шта је Стреам?

Ток је једноставно ток података или знакова. Постоје две врсте токова: улазни и излазни. Улазни ток се користи за читање података са спољног улазног уређаја, попут тастатуре, док се излазни ток користи за писање података на спољни излазни уређај, као што је монитор. Датотека се може сматрати и улазним и излазним извором.









У Ц ++, користимо ток за слање или пријем података у или из спољног извора.



Можемо користити уграђене класе за приступ улазно/излазном току, тј. Иос.





Ево хијерархије класа тока програмског језика Ц ++:



Објекти цин и цоут користе се за читање података са тастатуре и за приказ резултата на монитору. Осим тога, ифстреам, који означава улазни ток датотека, користи се за читање тока података из датотеке, а офстреам, који означава излазни ток датотека, користи се за писање тока података у датотеку.

Датотека иострам.х садржи све потребне стандардне класе улазног/излазног тока у програмском језику Ц ++.

Примери

Сада када разумете основе токова, разговараћемо о следећим примерима који ће вам помоћи да боље разумете операције са датотекама у Ц ++:

  • Пример 1: Отварање и затварање датотеке
  • Пример 2: Запишите у датотеку
  • Пример 3: Читање из датотеке
  • Пример 4: Читање и писање у датотеку
  • Пример 5: Читање и писање у бинарну датотеку

Пример 1: Отварање и затварање датотеке

У овом примеру програма показаћемо како отворити/креирати датотеку и како је затворити у Ц ++. Као што можете видети у доњем програму, укључили смо библиотеку потребну за рад са датотекама.

За отварање и затварање датотеке потребан нам је објекат офстреам. Затим, да бисмо читали или писали у датотеку, морамо је отворити. Укључили смо датотеку заглавља фстреам у ред број 1 како бисмо могли приступити класи класе.

Прогласили смо миФиле_Хандлер као објекат офстреам унутар главне функције. Затим можемо користити функцију опен () за креирање празне датотеке и функцију цлосе () за затварање датотеке.

#инцлуде

Користећи именски просторсати;

интглавни()
{
офстреам миФиле_Хандлер;

// Датотека отворена
миФиле_Хандлер.отворен('Филе_1.ткт');

// Филе Цлосе
миФиле_Хандлер.Близу();
повратак 0;
}

Сада ћемо саставити програм и испитати излаз. Као што можете видети у излазном прозору испод, датотека Филе_1.ткт је створена након извршавања програма. Величина датотеке је нула јер нисмо написали никакав садржај у датотеци.

Пример 2: Запишите у датотеку

У претходном примеру програма показали смо вам како да отворите датотеку и како да је затворите. Сада ћемо вам показати како нешто написати у датотеку.

Можемо писати у датотеку помоћу оператора уметања тока, тј.<<. In this program, we have used the file handler and insertion operator to write two lines in the file. The insertion operator (<<) indicates that we are inserting the string into the output file stream object.

#инцлуде

Користећи именски просторсати;

интглавни()
{
офстреам миФиле_Хандлер;
// Датотека отворена
миФиле_Хандлер.отворен('Филе_1.ткт');

// Записивање у датотеку
миФиле_Хандлер<< 'Ово је узорак тест датотеке. ' <<ендл;
миФиле_Хандлер<< 'Ово је други ред датотеке. ' <<ендл;

// Филе Цлосе
миФиле_Хандлер.Близу();
повратак 0;
}

Сада ћемо саставити горњи програм и извршити га. Као што видите доле, успешно смо писали у датотеку Филе_1.ткт.

Пример 3: Читање из датотеке

У претходним примерима смо вам показали како записати садржај у датотеку. Сада, прочитајмо садржај из датотеке коју смо креирали у Примеру 2 и прикажимо садржај на стандардном излазном уређају, тј. Монитору.

Користимо функцију гетлине () за читање целе линије из датотеке, а затим цоут за штампање линије на монитору.

#инцлуде
#инцлуде
#инцлуде

Користећи именски просторсати;

интглавни()
{
ифстреам миФиле_Хандлер;
стринг миЛине;

// Датотека отворена у режиму читања
миФиле_Хандлер.отворен('Филе_1.ткт');

ако(миФиле_Хандлер.је отворен())
{
// Наставите читати датотеку
док(гетлине(миФиле_Хандлер, миЛине))
{
// штампање линије на стандардном излазу
цена <<миЛине<<ендл;
}
// Филе Цлосе
миФиле_Хандлер.Близу();
}
елсе
{
цена << 'Није могуће отворити датотеку!';
}
повратак 0;
}

Сада ћемо одштампати садржај Филе_1.ткт помоћу следеће наредбе: цат Филе_1.ткт. Једном када компајлирамо и извршимо програм, јасно је да излаз одговара садржају датотеке. Стога смо успешно прочитали датотеку и одштампали садржај датотеке на монитору.

Пример 4: Читање и писање у датотеку

До сада смо вам показали како да отворите, читате, пишете и затворите датотеку. У Ц ++ -у такође можемо истовремено читати и писати у датотеку. За читање и писање у датотеку морамо набавити фстреам објекат и отворити датотеку у иос :: ин и иос :: оут режимима.

У овом примеру прво записујемо неки садржај у датотеку. Затим читамо податке из датотеке и штампамо их на монитору.

#инцлуде
#инцлуде
#инцлуде

Користећи именски просторсати;

интглавни()
{
фстреам миФиле_Хандлер;
стринг миЛине;

// Датотека отворена
миФиле_Хандлер.отворен('Филе_1.ткт', иос::у |иос::оут);

// Проверите да ли се датотека отворила
ако(!миФиле_Хандлер)
{
цена << 'Датотека се није отворила!';
излаз(1);
}

// Записивање у датотеку
миФиле_Хандлер<< '1. Ово је још један узорак тест датотеке. ' <<ендл;
миФиле_Хандлер<< '2. Ово је други ред датотеке. ' <<ендл;

миФиле_Хандлер.сеарг(иос::молити);

// Прочитајте датотеку
ако(миФиле_Хандлер.је отворен())
{
// Наставите читати датотеку
док(гетлине(миФиле_Хандлер, миЛине))
{
// штампање линије на стандардном излазу
цена <<миЛине<<ендл;
}

// Филе Цлосе
миФиле_Хандлер.Близу();
}
елсе
{
цена << 'Није могуће отворити датотеку!';
}
миФиле_Хандлер.Близу();
повратак 0;
}

Сада ћемо компајлирати и извршити програм.

Пример 5: Читање и писање у бинарну датотеку

У овом примеру ћемо прогласити класу, а затим записати објекат у бинарну датотеку. Да поједноставимо овај пример, класу Емплоиее смо прогласили јавном променљивом емп_ид. Затим ћемо прочитати бинарну датотеку и исписати излаз на монитор.

#инцлуде
#инцлуде

Користећи именски просторсати;

класаЗапослени
{
јавности:
интемп_ид;
};

интглавни()
{
офстреам бинОутФиле_Хандлер;
ифстреам бинИнФиле_Хандлер;

Запослени емпОбј_В, емпОбј_Р;

// Датотека отворена
бинОутФиле_Хандлер.отворен('Емплоиее.дат', иос::оут |иос::бинарни);

// Проверите да ли се датотека отворила
ако(!бинОутФиле_Хандлер)
{
цена << 'Датотека се није отворила!';
излаз(1);
}

// Иницијализација емпОбј_В
емпОбј_В.емп_ид = 1512;

// Записивање у датотеку
бинОутФиле_Хандлер.писати((цхар *) &емпОбј_В,величина(Запослени));
бинОутФиле_Хандлер.Близу();

ако(!бинОутФиле_Хандлер.Добро())
{
цена << 'Дошло је до грешке при писању бинарне датотеке!' <<ендл;
излаз(2);
}

// Сада прочитајмо датотеку Емплоиее.дат
бинИнФиле_Хандлер.отворен('Емплоиее.дат', иос::у |иос::бинарни);
// Проверите да ли се датотека отворила
ако(!бинИнФиле_Хандлер)
{
цена << 'Датотека се није отворила!';
излаз(3);
}

// Прочитајте садржај бинарне датотеке
бинИнФиле_Хандлер.читати((цхар *) &емпОбј_Р,величина(Запослени));
бинИнФиле_Хандлер.Близу();

ако(!бинИнФиле_Хандлер.Добро())
{
цена << 'Дошло је до грешке при читању бинарне датотеке!' <<ендл;
излаз(4);
}

// Штампа излаз емпОбј_Р
цена << 'Детаљи о запосленом:' <<ендл;
цена << 'Број запосленог : ' <<емпОбј_Р.емп_ид <<ендл;

повратак 0;
}

Закључак

Датотеке се углавном користе за складиштење података и играју важну улогу у програмирању у стварном свету. У овом чланку смо вам показали како да користите различите операције са датотекама са програмским језиком Ц ++ радећи кроз неколико примера. Надаље, показали смо вам како читати и уписивати податке у текстуалне датотеке и бинарне датотеке.