работает ли seekp() с текстовыми файлами
От: Micker  
Дата: 25.06.04 12:09
Оценка:
народ!

примерно такой код


std::fstream file_stream;
file_stream.open(fname.c_str(), std::ios_base::in | std::ios_base::out );
file_stream<<"bla-bla-bla"<<std::endl;
file_stream.flush();
file_stream.seekp(0); // почему то не срабатывает, как я ожидаю.
file_stream<<"cla-cla-cla"<<std::endl;
file_stream.flush();


почему-то в файле выдаёт

bla-bla-bla
сla-сla-сla

вместо, ожидаемой последней строчки (я же смещал позицию курсора).

В чем может быть проблема?
Стандарта под рукой нет, из страуструпа ничего не выудил...
В инете где-то нашёл что seekp не работает с текстовыми файлами... Правда?
Жизнь, как игра —
идея паршивая,
графика обалденная...
Re: работает ли seekp() с текстовыми файлами
От: Bell Россия  
Дата: 25.06.04 12:37
Оценка:
Здравствуйте, Micker, Вы писали:

Какой компилятор?
На VC6 все работает как положено.

ЗЫ
не помешало бы проверить открыся ли файл...
Любите книгу — источник знаний (с) М.Горький
Re[2]: работает ли seekp() с текстовыми файлами
От: Micker  
Дата: 25.06.04 12:43
Оценка:
Здравствуйте, Bell, Вы писали:

B>Какой компилятор?

VC 7.1

B>не помешало бы проверить открыся ли файл...

Убрал при создании сообщения для краткости. Все нормально.
Жизнь, как игра —
идея паршивая,
графика обалденная...
Re[3]: работает ли seekp() с текстовыми файлами
От: Bell Россия  
Дата: 25.06.04 12:55
Оценка:
Здравствуйте, Micker, Вы писали:

M>Здравствуйте, Bell, Вы писали:


А так?

file_stream.seekp(0, ios_base::beg);
Любите книгу — источник знаний (с) М.Горький
Re[4]: работает ли seekp() с текстовыми файлами
От: Micker  
Дата: 25.06.04 13:07
Оценка:
Здравствуйте, Bell, Вы писали:

B>
B>file_stream.seekp(0, ios_base::beg);
B>


Да, это я то же пробовал, не помогло.
А может ли это быть из-за какой нить буфферизации?
Жизнь, как игра —
идея паршивая,
графика обалденная...
Re: работает ли seekp() с текстовыми файлами
От: kaa_t Россия  
Дата: 25.06.04 16:29
Оценка:
Здравствуйте, Micker

Когда то давно сталкивался с этим. Там насколько помню, нужно сбросить флаг состаяния ios::eofbit, примерно так
file_stream << resetiosflag(ios::eofbit);



Ну если не поможет, то не знаю (точнее не помню давно было, но побороть можно)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.