Разделы презентаций


Лекция 5

Содержание

Потоки и файлыПотокиПотоковый ввод/вывод дисковых файловУказатели файловОбработка ошибок файлового ввода/вывода

Слайды и текст этой презентации

Слайд 1Лекция 5
Файлы

Лекция 5Файлы

Слайд 2Потоки и файлы
Потоки
Потоковый ввод/вывод дисковых файлов
Указатели файлов
Обработка ошибок файлового ввода/вывода

Потоки и файлыПотокиПотоковый ввод/вывод дисковых файловУказатели файловОбработка ошибок файлового ввода/вывода

Слайд 3Потоки
Поток — это общее название потока данных.
cin
cout

для ввода/вывода вместо

традиционных функций С для файлов —fscanf(),. fprintf()..





ПотокиПоток — это общее название потока данных. cincoutдля ввода/вывода вместо традиционных функций С для файлов —fscanf(),. fprintf()..

Слайд 5Таблица . Флаги форматирования класса ios
ios

Таблица . Флаги форматирования класса iosios

Слайд 6Все без исключения флаги могут быть выставлены с помощью методов

setf() и unsetf(). Пример:
cout.setf ( ios::left ): //выравнивание текста

по левому краю
cout >> "Этот текст выровнен по левому краю"
cout.unsetf ( ios:: left ): //вернуться к прежнему форматированию

Таблица 12.2. Манипуляторы ios без аргументов

Все без исключения флаги могут быть выставлены с помощью методов setf() и unsetf(). Пример:cout.setf ( ios::left ):

Слайд 7Таблица Манипуляторы ios с аргументами

Таблица Манипуляторы ios с аргументами

Слайд 8Таблица 4. Функции ios

Таблица 4. Функции ios

Слайд 9Потоковый ввод/вывод дисковых файлов
Классы ifstream, ofstream и fstream объявлены в

файле FSTREAM.
Старые функции языка С, такие, как fread() и fwrite()

в C++ работают,

Запись данных

// Форматированный вывод в файл с использованием <<

#include // для файлового ввода вывода
#include
#include
using namespace std;
int main() {
char ch = 'x';
int j = 77;
double d = 6.02;
string str1 = "Kafka"; // строки без пробелов
string str2 = "Proust";

Потоковый ввод/вывод дисковых файловКлассы ifstream, ofstream и fstream объявлены в файле FSTREAM.Старые функции языка С, такие, как

Слайд 10ofstream outfile("fdata.txt"); //создать объект ofstream
outfile

// вставить //(записать) данные

<< j
<< ' ' // пробелы между числами
<< d
<< str1
<< ' ' // пробелы между строками
<< str2;
cout << "Файл записан\n";

return 0;
}

ofstream outfile(

Слайд 11Чтение данных
// форматированное чтение из файла с помощью >>
#include

// для файлового

ввода/вывода
#include
#include
using namespace std;
int main() {
char ch; int j; double d;
string str1; string str2;
ifstream infile ( "fdata.txt“ ); // создать объект ifstream
// извлечь (прочесть) из него данные
infile >> ch >> j >> d >> str1 >> str2;
cout << ch << endl // вывести данные
<< j << endl
<< d << endl
<< str1 << endl
<< str2 << endl;
return 0;
}

Слайд 12Строки с пробелами
// файловый вывод строк с пробелами
#include

// для операций

// файлового ввода/вывода
using namespace std;
int main() {
ofstream outfile("TEST.TXT"); // создать выходной файл
// отправить текст в файл
outfile << "Приходит март. Я сызнова служу.\n";
outfile << "В несчастливом кружении событий \n";
outfile << "изменчивую прелесть нахожу \n";
outfile << "в смешеньи незначительных наитий.\n";
return 0;
}
Строки с пробелами// файловый вывод строк с пробелами#include    // для операций

Слайд 13getline()
// Файловый ввод (извлечение из файла) строк
#include

// для файловых функций
#include


using namespace std;

int main() {
const int MAX = 80; // размер буфера
char buffer [MAX]; // буфер символов
ifstream infile ("TEST.TXT"); // создать входной файл

while( !infile.eof() ) // цикл до EOF
{
infile.getline(buffer, MAX); // читает строку текста
cout << buffer << endl; // и выводит ее
}
return 0;
}
getline() // Файловый ввод (извлечение из файла) строк #include       // для

Слайд 14Ввод/вывод символов
// Посимвольный файловый вывод

#include

// для файловых функций
#include
#include
using

namespace std;

int main() {
string str = "Время – великий учитель, но, увы, "
"оно убивает своих учеников. Берлиоз";
ofstream outfile("TEST.TXT"); // Создать выходной файл
for(int j=0; j outfile.put( str[j] ); // записывать в файл
cout << "Файл записан\n";
return 0;
}
Ввод/вывод символов// Посимвольный файловый вывод #include         // для файловых

Слайд 15// Посимвольный файловый ввод

#include

// для файловых функций
#include
using namespace std;
int main()

{
char ch; // символ для считывания
ifstream infile("TEST.TXT"); // входной файл
while( infile ) // читать до EOF или ошибки
{
infile.get(ch); // считать символ
cout << ch; // и вывести его
}
cout << endl;
return 0;
}
// Посимвольный файловый ввод#include       // для файловых функций#include using namespace std;int

Слайд 16Двоичный ввод/вывод
// Двоичный ввод/вывод целочисленных данных

#include

// для файловых потоков
#include
using namespace std;

const int MAX

= 100; // размер буфера
int buff[MAX]; // буфер для целых чисел
int main() {
for ( int j=0; j buff[j] = j; // (0, 1, 2, ...)
// создать выходной поток
ofstream os("edata.dat", ios::binary);
// записать в него
os.write(reinterpret_cast(buff), MAX*sizeof(int) );
os.close(); // должен закрыть его
Двоичный ввод/вывод// Двоичный ввод/вывод целочисленных данных#include     // для файловых потоков#include using namespace std;const

Слайд 17for(j=0; j

buff[j] = 0;

// создать входной поток
ifstream

is("edata.dat", ios::binary);

// читать из него
is.read( reinterpret_cast(buff), MAX*sizeof(int) );

for(j=0; j if ( buff[j] != j )
{ cerr << "Некорректные данные!\n"; return 1; }
cout << "Данные корректны\n";

return 0;
}

for(j=0; j

Слайд 18 При работе с бинарными данными в качестве второго параметра

write() и read() следует использовать ios::binary

Оператор reinterpret_cast

Закрытие файлов
close()
Открытие

файлов
Функция ореn()
При работе с бинарными данными в качестве второго параметра write() и read() следует использовать ios::binary Оператор

Слайд 19Таблица 12.10. Биты режимов
Указатели файлов
Функции seekg() и tellg() позволяют устанавливать

и проверять текущий указатель чтения, а функции seekp() и tellp()—

выполнять те же действия для указателя записи.
Таблица 12.10. Биты режимовУказатели файловФункции seekg() и tellg() позволяют устанавливать и проверять текущий указатель чтения, а функции

Слайд 20Рис. Функция seekg() с одним аргументом
Рис. 12.5. Функция seekp() с

двумя аргументами

Рис. Функция seekg() с одним аргументомРис. 12.5. Функция seekp() с двумя аргументами

Слайд 21// seekg.cpp Поиск конкретного объекта в файле
#include

// для файловых потоков
#include
using namespace std;
person

{ // класс person
protected:
char name[80]; // имя человека
int age; // его возраст
public:
void getData() { // получить данные о человеке
cout << "\n Введите имя: "; cin >> name;
cout << " Введите возраст: "; cin >> age;
}
void showData(void) { // вывод данных о человеке
cout << "\n Имя: " << name;
cout << "\n Возраст: " << age;
}
};
// seekg.cpp Поиск конкретного объекта в файле#include     // для файловых потоков#include using namespace

Слайд 22int main() {
person pers;

// создать объект person
ifstream

infile; // создать входной файл
infile.open("GROUP.DAT",ios::in|ios::binary); // открыть файл

infile.seekg(0, ios::end); // установить указатель на 0
// байт от конца файла
int endposition = infile.tellg(); // найти позицию
int n = endposition / sizeof(person); // число человек
cout << "\nВ файле " << n << " человек(а)";
cout << "\nВведите номер персоны: ";
cin >> n;
int position = (n-1) * sizeof(person); // умножить размер
// данных под персону на число персон
infile.seekg(position); // число байт от начала
// прочитать одну персону
infile.read( reinterpret_cast(&pers), sizeof(pers) );
pers.showData(); //вывести одну персону
cout << endl;
return 0; }
int main()  { person pers;         // создать объект

Слайд 23// Обработка ошибок ввода/вывода
#include

// для файловых потоков
#include
using namespace std;
#include

// для exit()
const int MAX = 1000;
int buff[MAX];

int main() {
for (int j=0; j buff[j] = j;
ofstream os; // создать выходной поток
// открыть его
os.open (“c:\\temp\\edata.dat", ios::trunc | ios::binary);
if(!os)
{ cerr << "Невозможно открыть выходной файл\n"; exit(1); }
cout << "Идет запись...\n"; // записать в него содержимое
// буфера

// Обработка ошибок ввода/вывода#include       // для файловых потоков#include using namespace std;#include

Слайд 24os.write( reinterpret_cast(buff), MAX*sizeof(int) );
if(!os) { cerr

// надо закрыть поток
for(j=0; j buff[j] = 0;
ifstream is; // создать входной поток
is.open(" c:\\temp\\ edata.dat", ios::binary);
if(!is)
{ cerr << "Невозможно открыть входной файл\n";exit(1); }
cout << "Идет чтение...\n"; // чтение файла

is.read( reinterpret_cast(buff), MAX*sizeof(int) );
if(!is)
{ cerr << "Невозможно чтение файла\n"; exit(1); }
for(j=0; j if( buff[j] != j )
{ cerr << "\nДанные некорректны\n"; exit(1); }
cout << "Данные в порядке\n";
return 0; }
os.write( reinterpret_cast(buff), MAX*sizeof(int) ); if(!os)    { cerr

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика