C ++

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

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

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

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

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

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

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

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

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

„Йострамът.h ”файлът съдържа всички необходими стандартни класове входни / изходни потоци в езика за програмиране C ++.

Примери

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

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

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

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

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

#include
използване на пространство от имена std;
int main ()

от потока myFile_Handler;
// Файлът е отворен
myFile_Handler.отворено ("Файл_1.текст");
// Затваряне на файла
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.

#include
използване на пространство от имена std;
int main ()

от потока myFile_Handler;
// Файлът е отворен
myFile_Handler.отворено ("Файл_1.текст");
// Записване във файла
myFile_Handler << "This is a sample test File. " << endl;
myFile_Handler << "This is the second line of the file. " << endl;
// Затваряне на файла
myFile_Handler.близо();
връщане 0;

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

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

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

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

#include
#include
#include
използване на пространство от имена std;
int main ()

ifstream myFile_Handler;
низ myLine;
// Файлът се отваря в режим на четене
myFile_Handler.отворено ("Файл_1.текст");
if (myFile_Handler.е отворено())

// Продължавайте да четете файла
докато (getline (myFile_Handler, myLine))

// отпечатваме реда на стандартния изход
Cout << myLine << endl;

// Затваряне на файла
myFile_Handler.близо();

друго

Cout << "Unable to open the file!";

връщане 0;

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

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

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

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

#include
#include
#include
използване на пространство от имена std;
int main ()

fstream myFile_Handler;
низ myLine;
// Файлът е отворен
myFile_Handler.отворено ("Файл_1.txt ", ios :: in | ios :: out);
// Проверете дали файлът се е отворил
ако (!myFile_Handler)

Cout << "File did not open!";
изход (1);

// Запис във файла
myFile_Handler << "1. This is another sample test File. " << endl;
myFile_Handler << "2. This is the second line of the file. " << endl;
myFile_Handler.търси (ios :: проси);
// Прочетете файла
if (myFile_Handler.е отворено())

// Продължавайте да четете файла
докато (getline (myFile_Handler, myLine))

// отпечатваме реда на стандартния изход
Cout << myLine << endl;

// Затваряне на файла
myFile_Handler.близо();

друго

Cout << "Unable to open the file!";

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

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

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

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

#include
#include
използване на пространство от имена std;
клас Служител

публично:
int emp_id;
;
int main ()

от потока binOutFile_Handler;
ifstream binInFile_Handler;
Служител empObj_W, empObj_R;
// Файлът е отворен
binOutFile_Handler.отворен ("Служител.dat ", ios :: out | ios :: двоичен);
// Проверете дали файлът се е отворил
ако (!binOutFile_Handler)

Cout << "File did not open!";
изход (1);

// Инициализиране на empObj_W
empObj_W.emp_id = 1512;
// Записване във файла
binOutFile_Handler.write ((char *) & empObj_W, sizeof (Служител));
binOutFile_Handler.близо();
ако (!binOutFile_Handler.добре())

Cout << "Error occured during writing the binary file!" << endl;
изход (2);

// Сега, нека прочетем служителя.dat файл
binInFile_Handler.отворен ("Служител.dat ", ios :: in | ios :: двоичен);
// Проверете дали файлът се е отворил
ако (!binInFile_Handler)

Cout << "File did not open!";
изход (3);

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

Cout << "Error occured during reading the binary file!" << endl;
изход (4);

// Отпечатваме изхода на empObj_R
Cout << "Details of the Employee : " << endl;
Cout << "Employee ID : " << empObj_R.emp_id << endl;
връщане 0;

Заключение

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

Урок за OpenTTD
OpenTTD е една от най-популярните бизнес симулационни игри там. В тази игра трябва да създадете прекрасен транспортен бизнес. Въпреки това, ще започне...
SuperTuxKart за Linux
SuperTuxKart е страхотно заглавие, създадено да ви предостави безплатно изживяването на Mario Kart във вашата Linux система. Играта е доста предизвика...
Урок за битка за Уеснот
Битката за Уеснот е една от най-популярните стратегически игри с отворен код, които можете да играете по това време. Тази игра не само се разработва о...