Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с уничтожающимся потоком / 7 сообщений из 7, страница 1 из 1
01.05.2007, 03:55
    #34498062
DarkPhoenix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с уничтожающимся потоком
Что есть:
Есть программа. В ней перегрузка оператора ввода (получает ifstream и возвращает ifstream) с довольно-таки муторной обработкой текста (для чего пришлось перегонять поток в string). После обработки я с чистой совестью хотел сделать ifstream.putback()'ом впхнуть это обратно, но не тут-то было...
Файл на вход читается до конца; после чего весь поток отдается на растерзание обработчику (который поедает весь этот поток целиком).
Код:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
ifstream& operator >> (ifstream& fin, TEXT& text)
{
	SENTENCE sentence;
	//Тот самый метод обработки - название с виду простое :) обрабатывает посимвольно через while (!fin.eof()) { ... }
	text.widthtruncate(fin);

	//Это по дее должно писать элементы строки (прайм) обратно в поток, которого на деле не существует
	for (int i=(int)text.prime.size()-1;i>=0;i--)
	{
		fin.putback(ah.at(i));
	}

	//Передача далее по инстанциям
	while (!fin.eof())
	{
		fin >> sentence;
		text.body.push_back(sentence);
	}
	return fin;
}


Проблема в том, что судя по всему поток уничтожается с чтением EOF. Возможно ли как-нибудь засечь EOF до считывания еофа и уничтожения потока?
Или как-нибудь предотвратить его уничтожение?
Или проще создать новый поток и писать содержимое строки уже в него, и его же передавать далее?
Если последнее - подскажите плиз, как именно создается поток и в него пишется строка без необходимости создания файла. Буду премного благодарен...
...
Рейтинг: 0 / 0
01.05.2007, 13:11
    #34498173
grieg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с уничтожающимся потоком
автор, ничего не понятно.
зачем ты хочешь запихать обратно в поток то, что оттуда уже считал?
если ты это уже считал в строчку, работай с этой строчкой.
...
Рейтинг: 0 / 0
01.05.2007, 17:33
    #34498281
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с уничтожающимся потоком
В ifstream putback'ом можно вернуть только один символ, - только что прочитанный
...
Рейтинг: 0 / 0
01.05.2007, 18:33
    #34498311
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с уничтожающимся потоком
Немножко лоханулся.Всеу что можно воостановить, вернуть назад в поток расположено межде началом буфера ввода и текущей позицией в нем. На большее расчитывать нельзя. Если поток не буферизован то можно расчитывать только на один символ.
...
Рейтинг: 0 / 0
02.05.2007, 14:16
    #34499616
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с уничтожающимся потоком
DarkPhoenix пишет:

> Проблема в том, что судя по всему поток уничтожается с чтением EOF.

Поток не уничтожается. Он переходит в состояние "конец данных".
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
02.05.2007, 14:34
    #34499684
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с уничтожающимся потоком
Кстати eofbit можно снять - вызвать метод clear(ios::eof_bit)
...
Рейтинг: 0 / 0
02.05.2007, 15:29
    #34499863
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с уничтожающимся потоком
<sstream>
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с уничтожающимся потоком / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]