Ввід-вивід символів

Функції put() та get(), що є методами ostream та istream відповідно, можуть бути використані для вводу-виводу одиничних символів. У програмі 26.5 рядки виводяться посимвольно.

//Посимвольний файловий вивід

#include<fstream>

#include<iostream>

#include<string>

#include<conio>

using namespace std;

int main()

{

string str="11111 111111 "

"22222 222222 ";

ofstream outfile("test.txt");

for(int j=0;j<str.size();j++)

outfile.put(str[j]);

cout<<"File zapysanyj\n";

getch();

return 0;

}

 

Програма 26.5

В цій програмі об’єкт ofstream створюється так само, як в програмі 26.4. Довжина об’єкту класу string на ім’я str визначається за допомогою методу size(), а символи виводяться в циклі for функцією put(). Результат записується в файл test.txt. Зчитуємо і виводимо цей файл за допомогою програми 26.5а.

//Посимвольний файловий вивід

#include<fstream>

#include<iostream>

#include<string>

#include<conio>

using namespace std;

int main()

{

char ch;

ifstream infile("test.txt");

while(infile) //читати до кінця чи помилки

{infile.get(ch);//зчитати символ

cout<<ch; //вивести його

}

cout << endl;

getch();

return 0;

}

Програма 26.5а

В цій програмі використовується функція get(). Читання проходить до ознаки закінчення файлу (чи виникнення помилки). Кожен прочитаний символ виводиться в потік cout, тому на екран в результаті роботи програми буде виведений весь вміст файлу.

Є й інший спосіб читати символи з файлу – використовувати функцію rdbuf(), що є методом класу ios. Функція повертає вказівник на об’єкт класу streambuf (чи filebuf), асоційований з потоковим об’єктом. В цьому об’єкті знаходиться буфер символів, зчитаних з потоку, тому можна використовувати вказівник на нього в якості об’єкту даних.

Описаний спосіб реалізується в програмі 26.5b

//Посимвольний файловий вивід

#include<fstream>

#include<iostream>

#include<string>

#include<conio>

using namespace std;

int main()

{

char ch;

ifstream infile(“test.txt”);//створити вхідний файл

cout<<infile.rdbuf();//передати його буфер в cout

cout << endl;

getch();

return 0;

}

 

Програма 26.5b

Результат роботи цієї програми співпадає з попереднім. Зверніть увагу, що функція rdbuf() сама знає, що слід припинити програму при досягненні eof.

 








Дата добавления: 2015-08-26; просмотров: 584;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.