Флаги Состояния Потока В/в, Функции.

OverClocker

New Member
21.09.2014
1
0
#1
Привет гуру. Недавно начал изучать C++, до этого писал на чистом C. Хочу попросить вашей помощи с решением.

Само задание:
Написать функцию, получающую и возвращающую ссылку на объект класса istream. Функция должна читать данные из потока до тех пор, пока не будет достигнут конец файла. Функция должна выводить прочитанные данные на стандартное устройство вывода. Перед возвращением потока верните все значения его флагов в допустимое состояние. Проверьте созданную функцию, передав ей при вызове объект cin в качестве аргумента.

Вот что я написал (понимаю что не совсем по заданию, но пока ещё не силён в C++):
C++:
#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
const int SIZE(64);
int i(1);
char buffer[ SIZE ];
while( i == 1 ) {
cout << "\nВведите стрку и нажмите Ctrl+D (символ конец файла): ";
cin.get(buffer, SIZE, EOF);
cout << "\n";
cout << "\nФлаги до сброса: " << endl;
cout << "Флаг состояния eof(): " << cin.eof() << endl;
cout << "Флаг состояния bad(): " << cin.bad() << endl;
cout << "Флаг состояния fail(): " << cin.fail() << endl;
cout << "Флаг состояния good(): " << cin.good() << endl;
cin.clear();
cout << "\nПовторить ввод (1/0)?" << endl;
cin >> i;
if ( i == 1) {
cout << "\nФлаг после сброса: " << endl;
cout << "Флаг состояния eof(): " << cin.eof() << endl;
cout << "Флаг состояния bad(): " << cin.bad() << endl;
cout << "Флаг состояния fail(): " << cin.fail() << endl;
cout << "Флаг состояния good(): " << cin.good() << endl;
} else {
break;
}
}
return 0;
}
Задание вроде простое, но после чистого C возникают непонятности.
Хочу узнать от вас как будет правильно написать код по заданию? Интересует любая информация.