SlideShare une entreprise Scribd logo
1  sur  22
ФАЙЛОВЫЙ ВВОД/ВЫВОД В C++
Общие шаги
1. Включение заголовочного файла fstream в
программу.
2. Объявление файлового потока.
3. Связывание файлового потока с источником
ввода/вывода.
4. Открытие файла
5. Использование файлового потока с операциями
>>, <<, или другими функциями ввода/вывода.
6. Закрытие файла.
Файловый ввод/вывод в С++
 Поток – последовательность символов
интерактивный (iostream)
 cin – входной поток связанный с клавиатурой.
 cout – выходной поток связанный с дисплеем.
 cerr – выходной поток, в который направляются
сообщения об ошибках, связан обычно с дисплеем.
 clog - то же, что cerr, но буферизирован.
в файл (fstream)
 ifstream – определят новый входной поток (обычно
связанный с файлом).
 ofstream – определяет новый выходной поток (обычно
связанный с файлом).
Заголовочные файлы
 iostream – содержит основную информацию
необходимую для всех операций ввода/вывода
 iomanip – содержит информацию полезную для
форматирования потока ввода/вывода через
манипуляторы
 fstream – содержит информацию для файлового
ввода/вывода
 strstream – содержит информацию для выполнения
операций ввода/вывод через память (т.е. через строки
в памяти)
 ios базовый класс.
 istream и ostream наследуется от ios
 ifstream наследуется от istream (и ios)
 ofstream наследуется от ostream (и ios)
 iostream наследуется от istream и ostream (& ios)
 fstream наследуется ifstream, iostream, и ofstream
Классы для потоков в C++
C++ потоки
//Добавляем заголовок
#include <fstream>
int main ()
{ /* Объявляем файловые потоки */
ifstream fsIn; // входной
ofstream fsOut; // выходной
fstream both //входной & выходной
//Открываем файлы
inData.open("prog.dat"); //открываем входной файл
outData.open("prog.out"); //открываем выходной файл
// Код работы с потоками
.
// Закрываем файлы
inData.close();
outData.close();
return 0;
}
Функция оpen()
 оpen() это метод каждого класса ( fstream, ifstream,
ofstream)
 void fstream :: open ( const char *filename, openmode
mode);
 void ifstream ::
open ( const char *filename, openmode mode= ios::
in);
 void ofstream ::
open ( const char *filename, openmode mode=
ios:: out | iso :: trunc);
Объект и метод open()
input_stream.open("numbers.dat“)
Валидация файла перед обращением к
нему
//Проверить поток
if ( ! mystream)
{
cout << “Cannot
open file.n ”;
}
//Используя метод
//is_open()
if ( !
mystream.is_open()) {
cout << “File is
not open.n ”;
}
Первый подход Второй подход
Пример: открытие файла
#include <fstream>
using namespace std;
int main()
{
/* объявление и автоматическое
открытие файла*/
ofstream outFile(“fout.txt");
// валидация
if(! outFile) {
Cout << “Cannot open file.n ”;
return 1;
}
return 0;
}
#include <fstream>
using namespace std;
int main()
{
// декларируем выходной поток
ofstream outFile;
// открываем существующий файл
// fout.txt
outFile.open(“fout.txt”);
// валидация
if(! outFile.is_open() ) {
Cout << “Cannot open file.n ”;
return 1;
}
return 0;
}
С применением конструктора Используя метод open()
Пример: запись
#include <fstream>
using namespace std;
int main()
{ /* объявление и автоматическое
открытие файла */
ofstream outFile(“fout.txt");
//вывод как и в cout,
// пишем в файла
outFile << "Hello World!";
outFile.close();
return 0;
}
#include <fstream>
using namespace std;
int main()
{ // декларируем выходной поток
ofstream outFile;
// открываем существущий файл fout.txt
outFile.open(“fout.txt”);
//вывод как и в cout,
// пишем в файла
outFile << "Hello World!";
outFile.close();
return 0;
}
С применением конструктора Используя метод open()
Пример: чтение
#include <iostream>
#include <fstream>
int main()
{ // Открываем текстовый файл
ifstream openFile(“data.txt");
char ch;
// выполняем пока не конец файла
while( ! оpenFile.eof() )
{
оpenFile.get(ch); // получаем символ
cout << ch; // выводим в сout
}
оpenFile.close(); // закрываем файл
return 0;
}
#include <iostream>
#include <fstream>
#include <string> // для getline()
int main()
{ //октркываем файл
ifstream openFile(“data.txt");
string line;
while(!openFile.eof())
{//считать строку
getline(openFile, line);
cout << line;
}
openFile.close(); // close the file
return 0; }
Посимвольно Целой строки
Больше о функциях чтения
 ifstream fsin;
 fsIn.open(const char[] fname)
 Связывает поток fsIn с внешним файлом fname.
 fsIn.get(char& character)
 Получает следующий символ из потока fsIn и
помещает в character.
 fsIn.getline(char *buf, int n, char c = 'n')
 Извлекает строку из потока.
 fsIn.eof()
 Проверяет конец файла.
 fsIn >> c; // как cin
Больше о функциях записи
 ofstream fsOut;
 fsOut.open(const char[] fname)
 Связывает поток fsOut с внешним файлом
fname.
 fsOut.put(char character)
 Помещает символ character в выходной поток
fsOut.
 fsOut.eof()
 tests for the end-of-file condition.
 fsOut << c; //как cout
Флаги
Name Description
ios::in Открытие файла на чтение
ios::out Открытие файла на запись
ios::app Открытие на добавление. Вызывается ios::out
ios::ate Открытие на добавление. Не вызывается
ios::out
ios::trunc Удалить содержимое файла. (усечь до нулевой
длины)
ios::nocreate Если файл не существует, открытие с
помощью функции open() невозможно
ios::noreplace Если файл существует, попытка открытия
через функцию open() function, приведет к
ошибке
ios::binary Открыть в бинарном режиме
Файловые флаги
#include <fstream>
int main(void)
{
ofstream outFile("file1.txt", ios::out);
outFile << "That's new!n";
outFile.close();
Return 0;
}
Если необходимо установить больше фалгов просто
используйте оператор |. Таким образом:
ios::ate | ios::binary
Бинарный режим
 Функции для бинарного режима
get(): Извлекает один символ из потока
istream& istream::get(unsigned char&);
put(): Помещает один символ в поток
ostream& ostream::put(char);
read(): Производит чтение блока символов
istream& istream::read(unsigned char *buf, int len);
write(): Производит запись блока символов
ostream& osteram::write(const unsigned char *buf, int n);
Работа с бинарными файлами
 Некоторые полезные функции
seekg(): переход к определенной позиции для чтения
seekp():переход к определенной позиции для записи
tellg(): Возвращает текущую позицию чтения из потока
tellp(): Как и tellg() но для записи
flush(): Сбрасывает буфер в файл
Детальнее о перемещенияи
указателя
inFile.seekg(0) – перемещение указателя в начало файла
inFile.seekg(n, ios:beg) – перемещение позиции указателя на
n байт от начала файла
inFile.seekg(m, ios:end) – перемещение указателя на
m байт от конца файла
nFile.seekg(0, ios:end) – перемещение указателя в конец файла
Аналогичные операции в <ostream> и для функции seekp.
Пример
//Пример 1: Использование get() и put()
#include <iostream>
#include <fstream>
void main()
{
fstream File("test_file",ios::out | ios::in | ios::binary);
char ch;
ch='o';
File.put(ch); //помещение значения ch в поток
File.seekg(ios::beg); //переход в начало файла
File.get(ch); //чтение одного символа
cout << ch << endl; //отображение его
File.close();
}
Пример
//Пример 2: Использование read() и write()
#include <fstream.h>
#include <string.h>
void main()
{
fstream File("test_file.txt",ios::out | ios::in | ios::binary);
char arr[13];
strcpy(arr,"Hello World!"); //Помещаем данные в массив
File.write(arr,5); //помещаем первые 5 символов в файл т.е. "Hello"
File.seekg(ios::beg); //перемещаемся в начало файла
static char read_array[10]; //Будем считывать данные в эту переменную
File.read(read_array,3); //считываем первые 3 символа, т.е. "Hel"
cout << read_array << endl; //отображаем
File.close();
}
Пример
#include <fstream>
void main()
{
//Если у нас есть слово "Hello" в файле test_file.txt
ifstream File("test_file.txt");
char arr[10];
File.read(arr,10);
//мы должны увидеть 5, т.к. Hello длинной 5 символов
cout << File.tellg() << endl;
File.close();
}

Contenu connexe

Tendances

Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularities
mcroitor
 
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Ontico
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3
Technopark
 
Уязвимости сервисов
Уязвимости сервисовУязвимости сервисов
Уязвимости сервисов
Positive Hack Days
 
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
tfmailru
 
Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3
Technopark
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
Technopark
 
Web весна 2012 лекция 2
Web весна 2012 лекция 2Web весна 2012 лекция 2
Web весна 2012 лекция 2
Technopark
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
Technopark
 

Tendances (20)

C++ и базы данных
C++ и базы данныхC++ и базы данных
C++ и базы данных
 
стандартная библиотека с++: введение
стандартная библиотека с++: введениестандартная библиотека с++: введение
стандартная библиотека с++: введение
 
Файлы
ФайлыФайлы
Файлы
 
массивы Php
массивы Phpмассивы Php
массивы Php
 
Reform: путь к лучшему ORM
Reform: путь к лучшему ORMReform: путь к лучшему ORM
Reform: путь к лучшему ORM
 
Бессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоровБессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоров
 
Ngs 2
Ngs 2Ngs 2
Ngs 2
 
Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularities
 
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3
 
Недостатки Linux API с точки зрения разработчика веб-сервера.
Недостатки Linux API с точки зрения разработчика веб-сервера.Недостатки Linux API с точки зрения разработчика веб-сервера.
Недостатки Linux API с точки зрения разработчика веб-сервера.
 
Уязвимости сервисов
Уязвимости сервисовУязвимости сервисов
Уязвимости сервисов
 
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
 
Linux (pipes)
Linux (pipes) Linux (pipes)
Linux (pipes)
 
Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
 
Web весна 2012 лекция 2
Web весна 2012 лекция 2Web весна 2012 лекция 2
Web весна 2012 лекция 2
 
04 - Hadoop. HDFS Java API
04 - Hadoop. HDFS Java API04 - Hadoop. HDFS Java API
04 - Hadoop. HDFS Java API
 
Кеширование. Api. http 1.1 (rfc 2616)
Кеширование. Api. http 1.1 (rfc 2616)Кеширование. Api. http 1.1 (rfc 2616)
Кеширование. Api. http 1.1 (rfc 2616)
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
 

En vedette

OO Design with C++: 2. Inheritance, part 2
OO Design with C++: 2. Inheritance, part 2OO Design with C++: 2. Inheritance, part 2
OO Design with C++: 2. Inheritance, part 2
Dmitry Stillermann
 
OO Design with C++: 1. Inheritance, part 1
OO Design with C++: 1. Inheritance, part 1OO Design with C++: 1. Inheritance, part 1
OO Design with C++: 1. Inheritance, part 1
Dmitry Stillermann
 
OO Design with C++: 6. Templates & Patterns
OO Design with C++: 6. Templates & PatternsOO Design with C++: 6. Templates & Patterns
OO Design with C++: 6. Templates & Patterns
Dmitry Stillermann
 

En vedette (6)

eBrand Products & Services
eBrand Products & ServiceseBrand Products & Services
eBrand Products & Services
 
OO Design with C++: 2. Inheritance, part 2
OO Design with C++: 2. Inheritance, part 2OO Design with C++: 2. Inheritance, part 2
OO Design with C++: 2. Inheritance, part 2
 
Software for Fundraising
Software for FundraisingSoftware for Fundraising
Software for Fundraising
 
Tien Trinh Xay Dung Mot Chien Dich Quang Cao
Tien Trinh Xay Dung Mot Chien Dich Quang CaoTien Trinh Xay Dung Mot Chien Dich Quang Cao
Tien Trinh Xay Dung Mot Chien Dich Quang Cao
 
OO Design with C++: 1. Inheritance, part 1
OO Design with C++: 1. Inheritance, part 1OO Design with C++: 1. Inheritance, part 1
OO Design with C++: 1. Inheritance, part 1
 
OO Design with C++: 6. Templates & Patterns
OO Design with C++: 6. Templates & PatternsOO Design with C++: 6. Templates & Patterns
OO Design with C++: 6. Templates & Patterns
 

Similaire à file handling in c++

работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
metaform
 
О безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersО безопасном использовании PHP wrappers
О безопасном использовании PHP wrappers
Positive Hack Days
 
5. java lecture io
5. java lecture io5. java lecture io
5. java lecture io
MERA_school
 
Лекция 5
Лекция 5Лекция 5
Лекция 5
itc73
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
Technopark
 

Similaire à file handling in c++ (20)

Step 6
Step 6Step 6
Step 6
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
 
File input/output in VHDL
File input/output in VHDLFile input/output in VHDL
File input/output in VHDL
 
О безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersО безопасном использовании PHP wrappers
О безопасном использовании PHP wrappers
 
5. java lecture io
5. java lecture io5. java lecture io
5. java lecture io
 
Lec 5
Lec 5Lec 5
Lec 5
 
лек9 10
лек9 10лек9 10
лек9 10
 
Python: ввод и вывод
Python: ввод и выводPython: ввод и вывод
Python: ввод и вывод
 
Лекция 5
Лекция 5Лекция 5
Лекция 5
 
C# Desktop. Занятие 04.
C# Desktop. Занятие 04.C# Desktop. Занятие 04.
C# Desktop. Занятие 04.
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
 
встроен функции
встроен функциивстроен функции
встроен функции
 
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
 
НуП_Лекция 8. Работа с файлами на Ассемблере.ppt
НуП_Лекция 8. Работа с файлами на Ассемблере.pptНуП_Лекция 8. Работа с файлами на Ассемблере.ppt
НуП_Лекция 8. Работа с файлами на Ассемблере.ppt
 
Проект
ПроектПроект
Проект
 
Linux basics. Занятие 3.
Linux basics. Занятие 3. Linux basics. Занятие 3.
Linux basics. Занятие 3.
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
 
бегун
бегунбегун
бегун
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
 

Plus de Maxim Shaptala (8)

Mva stf module 6 - rus
Mva stf module 6 - rusMva stf module 6 - rus
Mva stf module 6 - rus
 
Mva stf module 5 - rus
Mva stf module 5 - rusMva stf module 5 - rus
Mva stf module 5 - rus
 
Mva stf module 4 - rus
Mva stf module 4 - rusMva stf module 4 - rus
Mva stf module 4 - rus
 
Mva stf module 3 - rus
Mva stf module 3 - rusMva stf module 3 - rus
Mva stf module 3 - rus
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rus
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
 
02 beginning code first
02   beginning code first02   beginning code first
02 beginning code first
 
01 introduction to entity framework
01   introduction to entity framework01   introduction to entity framework
01 introduction to entity framework
 

file handling in c++

  • 2. Общие шаги 1. Включение заголовочного файла fstream в программу. 2. Объявление файлового потока. 3. Связывание файлового потока с источником ввода/вывода. 4. Открытие файла 5. Использование файлового потока с операциями >>, <<, или другими функциями ввода/вывода. 6. Закрытие файла.
  • 3. Файловый ввод/вывод в С++  Поток – последовательность символов интерактивный (iostream)  cin – входной поток связанный с клавиатурой.  cout – выходной поток связанный с дисплеем.  cerr – выходной поток, в который направляются сообщения об ошибках, связан обычно с дисплеем.  clog - то же, что cerr, но буферизирован. в файл (fstream)  ifstream – определят новый входной поток (обычно связанный с файлом).  ofstream – определяет новый выходной поток (обычно связанный с файлом).
  • 4. Заголовочные файлы  iostream – содержит основную информацию необходимую для всех операций ввода/вывода  iomanip – содержит информацию полезную для форматирования потока ввода/вывода через манипуляторы  fstream – содержит информацию для файлового ввода/вывода  strstream – содержит информацию для выполнения операций ввода/вывод через память (т.е. через строки в памяти)
  • 5.  ios базовый класс.  istream и ostream наследуется от ios  ifstream наследуется от istream (и ios)  ofstream наследуется от ostream (и ios)  iostream наследуется от istream и ostream (& ios)  fstream наследуется ifstream, iostream, и ofstream Классы для потоков в C++
  • 6. C++ потоки //Добавляем заголовок #include <fstream> int main () { /* Объявляем файловые потоки */ ifstream fsIn; // входной ofstream fsOut; // выходной fstream both //входной & выходной //Открываем файлы inData.open("prog.dat"); //открываем входной файл outData.open("prog.out"); //открываем выходной файл // Код работы с потоками . // Закрываем файлы inData.close(); outData.close(); return 0; }
  • 7. Функция оpen()  оpen() это метод каждого класса ( fstream, ifstream, ofstream)  void fstream :: open ( const char *filename, openmode mode);  void ifstream :: open ( const char *filename, openmode mode= ios:: in);  void ofstream :: open ( const char *filename, openmode mode= ios:: out | iso :: trunc);
  • 8. Объект и метод open() input_stream.open("numbers.dat“)
  • 9. Валидация файла перед обращением к нему //Проверить поток if ( ! mystream) { cout << “Cannot open file.n ”; } //Используя метод //is_open() if ( ! mystream.is_open()) { cout << “File is not open.n ”; } Первый подход Второй подход
  • 10. Пример: открытие файла #include <fstream> using namespace std; int main() { /* объявление и автоматическое открытие файла*/ ofstream outFile(“fout.txt"); // валидация if(! outFile) { Cout << “Cannot open file.n ”; return 1; } return 0; } #include <fstream> using namespace std; int main() { // декларируем выходной поток ofstream outFile; // открываем существующий файл // fout.txt outFile.open(“fout.txt”); // валидация if(! outFile.is_open() ) { Cout << “Cannot open file.n ”; return 1; } return 0; } С применением конструктора Используя метод open()
  • 11. Пример: запись #include <fstream> using namespace std; int main() { /* объявление и автоматическое открытие файла */ ofstream outFile(“fout.txt"); //вывод как и в cout, // пишем в файла outFile << "Hello World!"; outFile.close(); return 0; } #include <fstream> using namespace std; int main() { // декларируем выходной поток ofstream outFile; // открываем существущий файл fout.txt outFile.open(“fout.txt”); //вывод как и в cout, // пишем в файла outFile << "Hello World!"; outFile.close(); return 0; } С применением конструктора Используя метод open()
  • 12. Пример: чтение #include <iostream> #include <fstream> int main() { // Открываем текстовый файл ifstream openFile(“data.txt"); char ch; // выполняем пока не конец файла while( ! оpenFile.eof() ) { оpenFile.get(ch); // получаем символ cout << ch; // выводим в сout } оpenFile.close(); // закрываем файл return 0; } #include <iostream> #include <fstream> #include <string> // для getline() int main() { //октркываем файл ifstream openFile(“data.txt"); string line; while(!openFile.eof()) {//считать строку getline(openFile, line); cout << line; } openFile.close(); // close the file return 0; } Посимвольно Целой строки
  • 13. Больше о функциях чтения  ifstream fsin;  fsIn.open(const char[] fname)  Связывает поток fsIn с внешним файлом fname.  fsIn.get(char& character)  Получает следующий символ из потока fsIn и помещает в character.  fsIn.getline(char *buf, int n, char c = 'n')  Извлекает строку из потока.  fsIn.eof()  Проверяет конец файла.  fsIn >> c; // как cin
  • 14. Больше о функциях записи  ofstream fsOut;  fsOut.open(const char[] fname)  Связывает поток fsOut с внешним файлом fname.  fsOut.put(char character)  Помещает символ character в выходной поток fsOut.  fsOut.eof()  tests for the end-of-file condition.  fsOut << c; //как cout
  • 15. Флаги Name Description ios::in Открытие файла на чтение ios::out Открытие файла на запись ios::app Открытие на добавление. Вызывается ios::out ios::ate Открытие на добавление. Не вызывается ios::out ios::trunc Удалить содержимое файла. (усечь до нулевой длины) ios::nocreate Если файл не существует, открытие с помощью функции open() невозможно ios::noreplace Если файл существует, попытка открытия через функцию open() function, приведет к ошибке ios::binary Открыть в бинарном режиме
  • 16. Файловые флаги #include <fstream> int main(void) { ofstream outFile("file1.txt", ios::out); outFile << "That's new!n"; outFile.close(); Return 0; } Если необходимо установить больше фалгов просто используйте оператор |. Таким образом: ios::ate | ios::binary
  • 17. Бинарный режим  Функции для бинарного режима get(): Извлекает один символ из потока istream& istream::get(unsigned char&); put(): Помещает один символ в поток ostream& ostream::put(char); read(): Производит чтение блока символов istream& istream::read(unsigned char *buf, int len); write(): Производит запись блока символов ostream& osteram::write(const unsigned char *buf, int n);
  • 18. Работа с бинарными файлами  Некоторые полезные функции seekg(): переход к определенной позиции для чтения seekp():переход к определенной позиции для записи tellg(): Возвращает текущую позицию чтения из потока tellp(): Как и tellg() но для записи flush(): Сбрасывает буфер в файл
  • 19. Детальнее о перемещенияи указателя inFile.seekg(0) – перемещение указателя в начало файла inFile.seekg(n, ios:beg) – перемещение позиции указателя на n байт от начала файла inFile.seekg(m, ios:end) – перемещение указателя на m байт от конца файла nFile.seekg(0, ios:end) – перемещение указателя в конец файла Аналогичные операции в <ostream> и для функции seekp.
  • 20. Пример //Пример 1: Использование get() и put() #include <iostream> #include <fstream> void main() { fstream File("test_file",ios::out | ios::in | ios::binary); char ch; ch='o'; File.put(ch); //помещение значения ch в поток File.seekg(ios::beg); //переход в начало файла File.get(ch); //чтение одного символа cout << ch << endl; //отображение его File.close(); }
  • 21. Пример //Пример 2: Использование read() и write() #include <fstream.h> #include <string.h> void main() { fstream File("test_file.txt",ios::out | ios::in | ios::binary); char arr[13]; strcpy(arr,"Hello World!"); //Помещаем данные в массив File.write(arr,5); //помещаем первые 5 символов в файл т.е. "Hello" File.seekg(ios::beg); //перемещаемся в начало файла static char read_array[10]; //Будем считывать данные в эту переменную File.read(read_array,3); //считываем первые 3 символа, т.е. "Hel" cout << read_array << endl; //отображаем File.close(); }
  • 22. Пример #include <fstream> void main() { //Если у нас есть слово "Hello" в файле test_file.txt ifstream File("test_file.txt"); char arr[10]; File.read(arr,10); //мы должны увидеть 5, т.к. Hello длинной 5 символов cout << File.tellg() << endl; File.close(); }