Как да четете и пишете във файл в C ++

How Read Write File C



В тази статия ще ви покажем как да четете и пишете във файл на езика за програмиране на C ++, като използвате няколко примера. За да разберем файловите операции на C ++ като четене и запис, първо трябва да разберем концепцията за поток в C ++.

Какво е поток?

Потокът е просто поток от данни или знаци. Има два типа потоци: входни потоци и изходни потоци. Входният поток се използва за четене на данни от външно устройство за въвеждане, като например клавиатура, докато изходният поток се използва за записване на данни към външно изходно устройство, като например монитор. Един файл може да се разглежда като входен и изходен източник.









В C ++ използваме поток за изпращане или получаване на данни към или от външен източник.



Можем да използваме вградени класове за достъп до входен/изходен поток, т.е. ios.





Ето йерархията на поточните класове на езика за програмиране на C ++:



Обектите cin и cout се използват за четене на данните от клавиатурата и за показване на изхода съответно на монитора. В допълнение, ifstream, който означава входен файлов поток, се използва за четене на поток от данни от файл, а ofstream, който означава изходен файлов поток, се използва за запис на поток от данни във файл.

Файлът iostram.h съдържа всички необходими стандартни класове входен/изходен поток в езика за програмиране на C ++.

Примери

Сега, когато разбирате основите на потоците, ще обсъдим следните примери, за да ви помогнем да разберете по -добре файловите операции в C ++:

  • Пример 1: Отваряне и затваряне на файл
  • Пример 2: Запис във файл
  • Пример 3: Четене от файл
  • Пример 4: Четене и запис във файл
  • Пример 5: Четене и запис в двоичен файл

Пример 1: Отваряне и затваряне на файл

В тази примерна програма ще покажем как да отворите/създадете файл и как да го затворите в C ++. Както можете да видите в програмата по -долу, ние включихме библиотеката, необходима за файлови операции.

За да отворите и затворите файл, се нуждаем от обект на поток. След това, за да четем или пишем във файл, трябва да го отворим. Включихме заглавния файл fstream на ред номер 1, за да имаме достъп до класа на потока.

Декларирахме myFile_Handler като обект на ofstream вътре в основната функция. След това можем да използваме функцията open () за създаване на празен файл и функцията close () за затваряне на файла.

#включва

използвайки пространство на именатачаса;

intглавен()
{
ofstream myFile_Handler;

// Файл отворен
myFile_Handler.отворен('File_1.txt');

// File Close
myFile_Handler.близо();
връщане 0;
}

Сега ще компилираме програмата и ще разгледаме изхода. Както можете да видите в изходния прозорец по -долу, файлът File_1.txt е създаден след изпълнение на програмата. Размерът на файла е нулев, тъй като не сме записали съдържание във файла.

Пример 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.

#включва

използвайки пространство на именатачаса;

intглавен()
{
ofstream myFile_Handler;
// Файл отворен
myFile_Handler.отворен('File_1.txt');

// Записване във файла
myFile_Handler<< „Това е примерен тест файл. ' <<endl;
myFile_Handler<< „Това е вторият ред на файла. ' <<endl;

// File Close
myFile_Handler.близо();
връщане 0;
}

Сега ще компилираме горната програма и ще я изпълним. Както можете да видите по -долу, успешно записахме файла File_1.txt.

Пример 3: Четене от файл

В предишните примери ви показахме как да записвате съдържание във файл. Сега нека прочетем съдържанието от файла, който създадохме в Пример-2 и да покажем съдържанието на стандартното изходно устройство, т.е. монитора.

Използваме функцията getline (), за да прочетем пълния ред от файла и след това cout, за да отпечатаме реда на монитора.

#включва
#включва
#включва

използвайки пространство на именатачаса;

intглавен()
{
ifstream myFile_Handler;
низ myLine;

// Файл отворен в режим на четене
myFile_Handler.отворен('File_1.txt');

ако(myFile_Handler.е отворено())
{
// Продължете да четете файла
докато(getline(myFile_Handler, myLine))
{
// отпечатваме реда на стандартния изход
цена <<myLine<<endl;
}
// File Close
myFile_Handler.близо();
}
иначе
{
цена << „Файлът не може да се отвори!“;
}
връщане 0;
}

Сега ще отпечатаме съдържанието на File_1.txt, като използваме следната команда: cat File_1.txt. След като компилираме и изпълним програмата, става ясно, че резултатът съвпада със съдържанието на файла. Следователно, ние успешно прочетохме файла и отпечатахме съдържанието на файла на монитора.

Пример 4: Четене и запис във файл

Досега ви показахме как да отваряте, четете, пишете и затваряте файл. В C ++ можем също да четем и пишем във файл едновременно. За да четем и пишем във файл, трябва да вземем fstream обект и да отворим файла в режими ios :: in и ios :: out.

В този пример първо записваме известно съдържание във файла. След това четем данните от файла и ги отпечатваме на монитора.

#включва
#включва
#включва

използвайки пространство на именатачаса;

intглавен()
{
fstream myFile_Handler;
низ myLine;

// Файл отворен
myFile_Handler.отворен('File_1.txt', ios::в |ios::навън);

// Проверете дали файлът е отворен
ако(!myFile_Handler)
{
цена << „Файлът не се отвори!“;
изход(1);
}

// Записване във файла
myFile_Handler<< '1. Това е друг примерен тест файл. ' <<endl;
myFile_Handler<< '2. Това е вторият ред на файла. ' <<endl;

myFile_Handler.търси(ios::помолвам);

// Прочетете файла
ако(myFile_Handler.е отворено())
{
// Продължете да четете файла
докато(getline(myFile_Handler, myLine))
{
// отпечатваме реда на стандартния изход
цена <<myLine<<endl;
}

// File Close
myFile_Handler.близо();
}
иначе
{
цена << „Файлът не може да се отвори!“;
}
myFile_Handler.близо();
връщане 0;
}

Сега ще компилираме и изпълним програмата.

Пример 5: Четене и запис в двоичен файл

В този пример ще декларираме клас и след това ще запишем обекта в двоичен файл. За да опростим този пример, декларирахме класа Employee с публична променлива emp_id. След това ще прочетем двоичния файл и ще отпечатаме изхода на монитора.

#включва
#включва

използвайки пространство на именатачаса;

класСлужител
{
обществен:
intemp_id;
};

intглавен()
{
от потока binOutFile_Handler;
ifstream binInFile_Handler;

Служител empObj_W, empObj_R;

// Файл отворен
binOutFile_Handler.отворен('Employer.dat', ios::навън |ios::двоичен);

// Проверете дали файлът е отворен
ако(!binOutFile_Handler)
{
цена << „Файлът не се отвори!“;
изход(1);
}

// Инициализиране на empObj_W
empObj_W.emp_id = 1512;

// Записване във файла
binOutFile_Handler.пиши((char *) &empObj_W,размер на(Служител));
binOutFile_Handler.близо();

ако(!binOutFile_Handler.добре())
{
цена << „Възникна грешка при писането на двоичен файл!“ <<endl;
изход(2);
}

// Сега нека да прочетем файла Employer.dat
binInFile_Handler.отворен('Employer.dat', ios::в |ios::двоичен);
// Проверете дали файлът е отворен
ако(!binInFile_Handler)
{
цена << „Файлът не се отвори!“;
изход(3);
}

// Прочетете съдържанието на двоичния файл
binInFile_Handler.Прочети((char *) &empObj_R,размер на(Служител));
binInFile_Handler.близо();

ако(!binInFile_Handler.добре())
{
цена << 'Възникна грешка при четене на двоичен файл!' <<endl;
изход(4);
}

// Отпечатайте изхода на empObj_R
цена << „Данни за служителя:“ <<endl;
цена << „Идентификационен номер на служител:“ <<empObj_R.emp_id <<endl;

връщане 0;
}

Заключение

Файловете се използват главно за съхранение на данните и играят важна роля в програмирането в реалния свят. В тази статия ви показахме как да използвате различни файлови операции с езика за програмиране C ++, като разгледахте няколко примера. Освен това ви показахме как да четете и записвате данни както в текстови, така и в двоични файлове.