Здравствуйте, HR0FT, Вы писали:
HRF>Есть следующий вопрос: HRF>Можно ли записать картинку в поток вывода? HRF>делаю так: HRF>std::ifstream f("image.jpg"); HRF>char c; HRF>while(f.get(c)) HRF> std::cout << c;
HRF>Но выводятся только несколько первых символов.
ИМХО Вы пвтаетесь работать с файлом как со строкой заканчивающейся нулём, в результате приходите к известному финалу ....
Здравствуйте, _INDY_, Вы писали:
_IN> ИМХО Вы пвтаетесь работать с файлом как со строкой заканчивающейся нулём, в результате приходите к известному финалу ....
Не подскажите что нужно сделать чтобы всетаки записать картинку?
Здравствуйте, HR0FT, Вы писали:
HRF>Здравствуйте, _INDY_, Вы писали:
_IN>> ИМХО Вы пвтаетесь работать с файлом как со строкой заканчивающейся нулём, в результате приходите к известному финалу ....
HRF>Не подскажите что нужно сделать чтобы всетаки записать картинку?
Прошу не кидаться помидорами, но всё осмелюсь предложить решение — перебирать поток и все непечатные символы заменять пробелами, тогда вы получите правильное текстовое отоборажение бинарного файла.
Здравствуйте, HR0FT, Вы писали:
HRF>Есть следующий вопрос: HRF>Можно ли записать картинку в поток вывода?
отчего же нет?
std::ifstream f("image.jpg", std::ios::binary);
// однако луче не посимвольно это делать...
std::streamsize file_size = f.seekg(0, std::ios::end).tellg();
f.seekg(0, std::ios::beg);
// если размер картинки гигабайт то луче всетки выделить память динамически на не на стеке :)char buf[file_size];
f.read(buf, file_size);
cout.write(buf, file_size);
Здравствуйте, zaufi, Вы писали:
Z>Здравствуйте, HR0FT, Вы писали: HRF>>все работает — но проблема! HRF>>при работе прграммы ужасно пищит системный динамик на компе.
Z>извиняюсь з анискромный вопрос: а ты ожидал увидеть картинку на экране?
Здравствуйте, zaufi, Вы писали:
Z>Здравствуйте, HR0FT, Вы писали:
HRF>>Есть следующий вопрос: HRF>>Можно ли записать картинку в поток вывода?
Z>отчего же нет?
Z>
Z>std::ifstream f("image.jpg", std::ios::binary);
Z>// однако луче не посимвольно это делать...
Z>std::streamsize file_size = f.seekg(0, std::ios::end).tellg();
Z>f.seekg(0, std::ios::beg);
Z>// если размер картинки гигабайт то луче всетки выделить память динамически на не на стеке :)
Z>char buf[file_size];
Z>f.read(buf, file_size);
Z>cout.write(buf, file_size);
Z>
Спасибо!
Можно зделать так чтобы при этом не пищал динамик?
Здравствуйте, HR0FT, Вы писали:
HRF>Здравствуйте, zaufi, Вы писали:
Z>>Здравствуйте, HR0FT, Вы писали:
HRF>>>Есть следующий вопрос: HRF>>>Можно ли записать картинку в поток вывода?
Z>>отчего же нет?
Z>>
Z>>std::ifstream f("image.jpg", std::ios::binary);
Z>>// однако луче не посимвольно это делать...
Z>>std::streamsize file_size = f.seekg(0, std::ios::end).tellg();
Z>>f.seekg(0, std::ios::beg);
Z>>// если размер картинки гигабайт то луче всетки выделить память динамически на не на стеке :)
Z>>char buf[file_size];
Z>>f.read(buf, file_size);
Z>>cout.write(buf, file_size);
Z>>
HRF>Спасибо! HRF>Можно зделать так чтобы при этом не пищал динамик?
А зачем его выводить в cout? Выводи в файл. Или выводи в cout и перенаправляй в файл.
Здравствуйте, zaufi, Вы писали:
HRF>>Есть следующий вопрос: HRF>>Можно ли записать картинку в поток вывода?
Z>отчего же нет?
Z>std::ifstream f("image.jpg", std::ios::binary);
Z>// однако луче не посимвольно это делать...
Z>std::streamsize file_size = f.seekg(0, std::ios::end).tellg();
Z>f.seekg(0, std::ios::beg);
Z>// если размер картинки гигабайт то луче всетки выделить память динамически на не на стеке :)
эт вы здорово придумали. особенно, если учесть что file_size -- не константа времени компиляции ;)
Z>char buf[file_size];
Z>f.read(buf, file_size);
может лучше while ( f.read(buf, file_size) ) {...}
где file_size -- константа.
Z>cout.write(buf, file_size);
Здравствуйте, night beast, Вы писали:
NB>Здравствуйте, zaufi, Вы писали:
HRF>>>Есть следующий вопрос: HRF>>>Можно ли записать картинку в поток вывода?
Z>>отчего же нет?
NB>
Z>>std::ifstream f("image.jpg", std::ios::binary);
Z>>// однако луче не посимвольно это делать...
Z>>std::streamsize file_size = f.seekg(0, std::ios::end).tellg();
Z>>f.seekg(0, std::ios::beg);
Z>>// если размер картинки гигабайт то луче всетки выделить память динамически на не на стеке :)
NB>эт вы здорово придумали. особенно, если учесть что file_size -- не константа времени компиляции ;)
спасиба. мне и самому нравица :) -- для развлечения попробуйте скомпилить это :))
Z>>char buf[file_size];
Z>>f.read(buf, file_size);
NB>может лучше while ( f.read(buf, file_size) ) {...}
NB>где file_size -- константа.
зачем заморачиваца? нафик нужен еще один уровень буферизации?
Z>>cout.write(buf, file_size);
NB>
HRF>Спасибо! HRF>Можно зделать так чтобы при этом не пищал динамик?
Если ты выводишь в консольный экран — то пищать будет (это особенность работы std::cout потока, когда конечной точкой является консоль). Это свойство консольного потока — при получении символа 0x08.
Насколько я понимаю здравый смысл — ты не будешь выводить реально в своей задаче это в консоль, это ведь никому не нужно, а будешь запускать свое приложение в рамках другого процесса — который будет перенаправлять stdout поток в свои недра — например так работают CGI приложения для HTTP серверов — там никакого звука не будет, так как данные идут не на консоль — а в другой процесс.
Z>>>std::ifstream f("image.jpg", std::ios::binary);
Z>>>// однако луче не посимвольно это делать...
Z>>>std::streamsize file_size = f.seekg(0, std::ios::end).tellg();
Z>>>f.seekg(0, std::ios::beg);
Z>>>// если размер картинки гигабайт то луче всетки выделить память динамически на не на стеке :)
NB>>эт вы здорово придумали. особенно, если учесть что file_size -- не константа времени компиляции ;)
Z> спасиба. мне и самому нравица :) -- для развлечения попробуйте скомпилить это :))
экий вы настойчивый :)
"ComeauTest.c", line 11: error: expression must have a constant value
char buf[file_size];
^
1 error detected in the compilation of "ComeauTest.c".
hint: variable-length arrays -- это чистый Си.
Z>>>char buf[file_size];
Z>>>f.read(buf, file_size);
Здравствуйте, night beast, Вы писали:
NB>Здравствуйте, zaufi, Вы писали:
NB>
Z>>>>std::ifstream f("image.jpg", std::ios::binary);
Z>>>>// однако луче не посимвольно это делать...
Z>>>>std::streamsize file_size = f.seekg(0, std::ios::end).tellg();
Z>>>>f.seekg(0, std::ios::beg);
Z>>>>// если размер картинки гигабайт то луче всетки выделить память динамически на не на стеке :)
NB>>>эт вы здорово придумали. особенно, если учесть что file_size -- не константа времени компиляции ;)
Z>> спасиба. мне и самому нравица :) -- для развлечения попробуйте скомпилить это :))
NB>экий вы настойчивый :)
NB>"ComeauTest.c", line 11: error: expression must have a constant value
NB> char buf[file_size];
NB> ^
NB>1 error detected in the compilation of "ComeauTest.c".
NB>hint: variable-length arrays -- это чистый Си.
да в теме я что это gcc/g++ specific -- проста тут всюду мега гуру советуют друг другу фичи M$ specific -- вот наш ответ! -- тоже спецификовый :)
хотя чессна признаться частенько злуопотребляю данной (удобной чего уж там скрывать :) ) "фичей"
Z>>>>char buf[file_size];
Z>>>>f.read(buf, file_size);
NB>
Здравствуйте, Shmakov, Вы писали:
S>Насколько я понимаю здравый смысл — ты не будешь выводить реально в своей задаче это в консоль, это ведь никому не нужно, а будешь запускать свое приложение в рамках другого процесса — который будет перенаправлять stdout поток в свои недра — например так работают CGI приложения для HTTP серверов — там никакого звука не будет, так как данные идут не на консоль — а в другой процесс.
Представляю себе, как сервер rapidshare пищит на каждом 0x07 из каждого файла
Roman Odaisky wrote:
> Представляю себе, как сервер rapidshare пищит на каждом 0x07 из каждого > файла
Просто устанавливают большой RAID из спикеров и пищание распараллеливается.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, Shmakov, Вы писали:
S>>Насколько я понимаю здравый смысл — ты не будешь выводить реально в своей задаче это в консоль, это ведь никому не нужно, а будешь запускать свое приложение в рамках другого процесса — который будет перенаправлять stdout поток в свои недра — например так работают CGI приложения для HTTP серверов — там никакого звука не будет, так как данные идут не на консоль — а в другой процесс.
RO>Представляю себе, как сервер rapidshare пищит на каждом 0x07 из каждого файла