Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потоки ввода/вывода для файлов, Потоки ввода/вывода для файлов 
:(
    Опции темы
Maxx
Дата 8.12.2006, 08:14 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.11.2006

Репутация: нет
Всего: нет



Открыто 2 потока ofstream  и ifstream для одного и того же двоичного файла. Пишем в файл.  Тут же пытаемся прочитать. А ничего... Пробовал закрыть и заново открыть потоки, но безрезультатно. Читается только после перезапуска программы. Help!!!
PM MAIL   Вверх
codelord
Дата 8.12.2006, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 1
Всего: 39



покажи как ты это делаешь


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Earnest
Дата 8.12.2006, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Возможно просто данные остаются в буфере. Ты же не думаешь, что каждый символ сразу в файл пишется? А буферы у ввода и вывода разные. Надо после записи сделать выходному потоку flush, а потом уже читать.


--------------------
...
PM   Вверх
Maxx
Дата 8.12.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.11.2006

Репутация: нет
Всего: нет



Код

===Потоки в моем классе iF===
ofstream fo;
ifstream fi;
=====================
====Начало функции 1=====
iF->fo.seekp(0);
iF->fi.open(name, ios::out|ios::binary);
iF->fo.open(name, ios::in|ios::binary);
int k=2;
iF->fo.seekp(0);
iF->fo.write((char *)&k,sizeof(k));
iF->fo.flush();
===конец функции======

====Начало функции 2====
int k;
iF->fi.seekg(0);
iF->fi.read((char *)&k,sizeof(k));
cout<<k;
===Конец функции 2======



И ничего... Даже пробовал потоки закрывать и заново открывать - не помогает
Вот единственное решение которое пока нашел это FILE.
PM MAIL   Вверх
JackYF
Дата 8.12.2006, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Maxx @  8.12.2006,  16:41 Найти цитируемый пост)
iF->fi.open(name, ios::out|ios::binary);
iF->fo.open(name, ios::in|ios::binary);


Ты fi открыл на запись, а fo - на чтение. Надо наоборот.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Maxx
Дата 8.12.2006, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.11.2006

Репутация: нет
Всего: нет



не работает... В файл пишет... В ходе работы программы смотрел, а читать не хотит!!!
PM MAIL   Вверх
JackYF
Дата 8.12.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Попробуй открыть файл fi после закрытия fo.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Maxx
Дата 9.12.2006, 05:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.11.2006

Репутация: нет
Всего: нет



Файл то один и тот же!!!! А нельзя. Надо почитать - поизменять - почитать с изменениями!!!
PM MAIL   Вверх
zabivator
Дата 10.12.2006, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 7.6.2006
Где: нск

Репутация: 1
Всего: 2



Maxx, попробуй использовать std::fstream вместо двх потоков. А то чорт там разбери, как они буферизуют все это барахло, и как операционка буферузует это еще сама.
--------------------
#include <zabivator>int main( int, char * [] ){   while( Zabivator::жив() ) Zabivator::моск()++;   return 0;}
PM MAIL WWW ICQ   Вверх
Любитель
Дата 11.12.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Если пишешь и читаешь в один (с одного) файл(а), то юзай std::fstream. Вызывай seekg/p перед переходом с чтения на запись. В флагах задай все три (бинари, рид, райт).


--------------------
PM MAIL ICQ Skype   Вверх
zabivator
Дата 11.12.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 7.6.2006
Где: нск

Репутация: 1
Всего: 2



Цитата(Любитель @ 11.12.2006,  10:54)
Если пишешь и читаешь в один (с одного) файл(а), то юзай std::fstream. Вызывай seekg/p перед переходом с чтения на запись. В флагах задай все три (бинари, рид, райт).

+1
--------------------
#include <zabivator>int main( int, char * [] ){   while( Zabivator::жив() ) Zabivator::моск()++;   return 0;}
PM MAIL WWW ICQ   Вверх
Maxx
Дата 14.12.2006, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.11.2006

Репутация: нет
Всего: нет



ОК. Я уже рахобрался. Файл открывается с исключительной блокировкой по умолчанию и второй поток тупо не откроется.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0852 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.