C++: Использую fstream вставить 2 символа в файл.

Форум для программистов

Сообщение Scalder » Вт май 27, 2003 7:51 pm

Руководством была поставлена задача: обработать что-то около 4500-10000 файликов, как всегда они об этом узнали (что нужно делать за неделю <!--emo&:(-->Изображение<!--endemo--> ). Ясен фиг, что ручками это нереально сделать. А в файлах нужно: найти определённую строку по содержимому... и вставить туда всего 2 символа. Задача из серии школьных. Но вопрос: Как использую fstream именно вставить, а не заменить символы в файле?
я делаю вот, так:
Код: выделить все
std::fstream outfile (file_name, std::ios_base::out);
   outfile<<"r"<<std::endl<<std::endl;
   outfile.close();

Ясен перец, что символ тут переписываеться , а не добавляеться.... жду ответа <!--emo&:(-->Изображение<!--endemo-->.
<!--coloro:green--><span style="color:green"><!--/coloro-->А что я не так сказал?<!--colorc--></span><!--/colorc-->
<!--coloro:red--><span style="color:red"><!--/coloro-->А ты как думал? Конечно это ИМХО<!--colorc--></span><!--/colorc-->

<!--coloro:red--><span style="color:red"><!--/coloro-->>В каждом системном администраторе есть что-то от Бога.<!--colorc--></span><!--/colorc-->
В каждом программисте есть что-то от Бога для Бога. :-р
<a href="http://www.erepublik.com/en/referrer/mrScalder" target="_blank">Изображение</a>
Scalder
Генерал-майор
 
Сообщений: 2587
Зарегистрирован: Пн апр 08, 2002 10:21 am
Пункты репутации: 0

Сообщение Scalder » Ср май 28, 2003 8:26 am

Проблема вроде решилась, но не так как хотелось.. придёться видать файлы перезаписывать <!--emo&:(-->Изображение<!--endemo-->((
<!--coloro:green--><span style="color:green"><!--/coloro-->А что я не так сказал?<!--colorc--></span><!--/colorc-->
<!--coloro:red--><span style="color:red"><!--/coloro-->А ты как думал? Конечно это ИМХО<!--colorc--></span><!--/colorc-->

<!--coloro:red--><span style="color:red"><!--/coloro-->>В каждом системном администраторе есть что-то от Бога.<!--colorc--></span><!--/colorc-->
В каждом программисте есть что-то от Бога для Бога. :-р
<a href="http://www.erepublik.com/en/referrer/mrScalder" target="_blank">Изображение</a>
Scalder
Генерал-майор
 
Сообщений: 2587
Зарегистрирован: Пн апр 08, 2002 10:21 am
Пункты репутации: 0

Сообщение dAnIK SeNT » Ср май 28, 2003 11:07 am

Как ты себе представляешь вставку двух символов? На физическом уровне? Байты раздвигаются... и в освободившееся место вставляются два символа! <!--emo&:)-->Изображение<!--endemo--> А ты шутник. "Вставка двух символов" на самом деле может выглядеть одним единственным образом - перезаписывается файл от того места где вставляются символы и до конца.
яНЯЕД ОН СОПЪФЙЕ: Athlon 64 X2 5200+ @2,86GHz / nF 570 SLI (ASUS M2N SLI Deluxe) / 4 Gb RAM (4x1Gb Kingston) / 2,9Tb SATAII (0,50+0,64+0,75+1,00Tb WD) / ASUS 8800 GTS512 / 2x NEC-Optiarc AD-7173 / Thermaltake ToughPower 650W / 2x30W Microlab Solo-2 / 20" LCD Benq FP202W (wide) / openSUSE 11.1 / KDE 4.2.1
<!--coloro:Navy--><span style="color:Navy"><!--/coloro-->оН БЯЕЛ БНОПНЯЮЛ - Б email. б ICQ ОНЪБКЪЧЯЭ ПЮГ Б ОНКЦНДЮ.<!--colorc--></span><!--/colorc-->
dAnIK SeNT
Маршал
 
Сообщений: 5101
Зарегистрирован: Чт мар 28, 2002 7:48 pm
Откуда: яяяп
Пункты репутации: 0

Сообщение Scalder » Ср май 28, 2003 11:11 am

2dAnIK SeNT
Так себе это и представляю.. читаеться файл.. доходим до определённого места куда я хочу вставить.. если нужно вставить один символ то создаём 2 буфера. читаем в буфер символ, вставляем чо нужно вставить... читаем другой и пишем данные из первого... реализовать кстати не так уж и сложно <!--emo&:)-->Изображение<!--endemo-->)))
<!--coloro:green--><span style="color:green"><!--/coloro-->А что я не так сказал?<!--colorc--></span><!--/colorc-->
<!--coloro:red--><span style="color:red"><!--/coloro-->А ты как думал? Конечно это ИМХО<!--colorc--></span><!--/colorc-->

<!--coloro:red--><span style="color:red"><!--/coloro-->>В каждом системном администраторе есть что-то от Бога.<!--colorc--></span><!--/colorc-->
В каждом программисте есть что-то от Бога для Бога. :-р
<a href="http://www.erepublik.com/en/referrer/mrScalder" target="_blank">Изображение</a>
Scalder
Генерал-майор
 
Сообщений: 2587
Зарегистрирован: Пн апр 08, 2002 10:21 am
Пункты репутации: 0

Сообщение Lynn » Ср май 28, 2003 11:39 am

2Scalder А на диске это как должно выглядеть? Раздвинем дорожки диска? <!--emo&:)-->Изображение<!--endemo-->
Where were you while we were getting high? — Oasis, Champagne Supernova
Lynn
Капитан
 
Сообщений: 267
Зарегистрирован: Пн апр 07, 2003 1:09 pm
Откуда: Москва
Пункты репутации: 0

Сообщение Scalder » Ср май 28, 2003 11:59 am

2Lynn
Возми листок бумаги и напиши на нём карандашом цифры 1,2,3,4...теперь пропускаем первую цифру.. запоминаем вторую (первый буфер) и вместо неё пишем допустим цифру 5., запоминаем третью цифру и вместо неё пишем цифру что мы запомнили (буфер 1) и т.д. до конца файла...в результате у нас получиться 1,5,2,3,4... и получаеться добавиться символ не в середине а в конце.. а так делать можно...(про фрагментацию слышал?)
<!--coloro:green--><span style="color:green"><!--/coloro-->А что я не так сказал?<!--colorc--></span><!--/colorc-->
<!--coloro:red--><span style="color:red"><!--/coloro-->А ты как думал? Конечно это ИМХО<!--colorc--></span><!--/colorc-->

<!--coloro:red--><span style="color:red"><!--/coloro-->>В каждом системном администраторе есть что-то от Бога.<!--colorc--></span><!--/colorc-->
В каждом программисте есть что-то от Бога для Бога. :-р
<a href="http://www.erepublik.com/en/referrer/mrScalder" target="_blank">Изображение</a>
Scalder
Генерал-майор
 
Сообщений: 2587
Зарегистрирован: Пн апр 08, 2002 10:21 am
Пункты репутации: 0

Сообщение Lynn » Ср май 28, 2003 12:44 pm

Ну да. Только всё равно ты переписываешь кусок файла от места вставки и до конца. Так зачем это делать самому по два байта, когда можно заставить это делать систему. Получится и быстрей и проще.
Where were you while we were getting high? — Oasis, Champagne Supernova
Lynn
Капитан
 
Сообщений: 267
Зарегистрирован: Пн апр 07, 2003 1:09 pm
Откуда: Москва
Пункты репутации: 0

Сообщение Scalder » Ср май 28, 2003 7:43 pm

2Lynn
<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Так зачем это делать самому по два байта, когда можно заставить это делать систему. Получится и быстрей и проще. <!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
Это как это?
<!--coloro:green--><span style="color:green"><!--/coloro-->А что я не так сказал?<!--colorc--></span><!--/colorc-->
<!--coloro:red--><span style="color:red"><!--/coloro-->А ты как думал? Конечно это ИМХО<!--colorc--></span><!--/colorc-->

<!--coloro:red--><span style="color:red"><!--/coloro-->>В каждом системном администраторе есть что-то от Бога.<!--colorc--></span><!--/colorc-->
В каждом программисте есть что-то от Бога для Бога. :-р
<a href="http://www.erepublik.com/en/referrer/mrScalder" target="_blank">Изображение</a>
Scalder
Генерал-майор
 
Сообщений: 2587
Зарегистрирован: Пн апр 08, 2002 10:21 am
Пункты репутации: 0


Вернуться в Программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

cron