Как мы знаем в C ++, у нас есть класс iostream, который наследуется от istream (basic_istream) и ostream (basic_ostream). В каждой книге C ++ вы можете найти, что с объектом класса iostream вы можете читать и записывать в один и тот же поток. Но я действительно не вижу никакого объяснения или примера, чтобы понять, почему я должен использовать такую странную мысль. Я действительно не знаю, зачем мне писать в какой-то поток, а потом читать из него :(.
Не могли бы вы объяснить, когда мне понадобится такая конструкция? Я думаю, что должна быть серьезная причина для использования такой конструкции (не забывайте, что только для объявления iostream мы используем виртуальное наследование и множественное наследование).
Также, когда я пытаюсь написать простой код, который использует fsteram (производный от iostream), я обнаруживаю, что он работает не так, как я ожидаю. Вот мой код:
#include <fstream>
using namespace std;
int main()
{
fstream fstr("somefile.txt",fstream::in|fstream::out);//fstream is deriveted from iosteram
int n;
fstr>>n;//reading n (WORKS FINE !!!).
fstr.flush();
//trying to print Hello to the same file
fstr<<"Hello"<<endl;// NOT WORKING!!!!!!!
fstr.flush();
return 0;
}
Можете ли вы сказать мне, почему этот код может читать из файла и не может что-то записать в него ????
Резюме:
Скажите, пожалуйста, для чего нам нужен класс iosteram и почему isteram и ostream не достаточно и как его использовать.
Спасибо и извините за мой английский:).
P.S. Возможно, этот вопрос является примитивным, но, пожалуйста, ответьте мне.
Редактировать: мой код сейчас работает. Спасибо Мурке.