Форум программистов, компьютерный форум CyberForum.ru

Копирование в текстовый файл из потока fstream массива типа char - C++

Восстановить пароль Регистрация
 
Divergence
 Аватар для Divergence
7 / 7 / 0
Регистрация: 19.06.2013
Сообщений: 174
25.06.2014, 20:03     Копирование в текстовый файл из потока fstream массива типа char #1
Всем привет!
У меня довольно простой, но очень важный для меня вопрос, ответ на который пока не очевиден...
Если я средствами Windows создал текстовый файл (С помощью notepad.exe), затем записываю в него массив из char, то у меня будет отображаться абракадабра или цифры и английские буквы?
Вопрос появился потому, что я декодирую GIF файл в BMP, затем записываю в буфер void* всю информацию о нем и хочу использовать пиксели из этого буфера. Однако, при копировании этого буфера в файл у меня абракадабра дикая получается... вот я никак и не могу понять: это я буфер неправильно создаю, декодирую что-то не так, или же так и должно быть и нужно wchar_t использовать...
Буду благодарен за помощь! =)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
25.06.2014, 20:10     Копирование в текстовый файл из потока fstream массива типа char #2
Цитата Сообщение от Divergence Посмотреть сообщение
Однако, при копировании этого буфера в файл у меня абракадабра дикая получается...
Это зависит от способа записи, который выбирается в зависимости от желаемого результата. Если писать бинарные данные - при просмотре в текстовом режиме будет абракадабра.
Divergence
 Аватар для Divergence
7 / 7 / 0
Регистрация: 19.06.2013
Сообщений: 174
25.06.2014, 20:22  [ТС]     Копирование в текстовый файл из потока fstream массива типа char #3
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Это зависит от способа записи, который выбирается в зависимости от желаемого результата. Если писать бинарные данные - при просмотре в текстовом режиме будет абракадабра.
Я записываю fstream в уже созданный текстовый документ, с флагом текстовый документ...
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
25.06.2014, 20:26     Копирование в текстовый файл из потока fstream массива типа char #4
Цитата Сообщение от Divergence Посмотреть сообщение
Я записываю fstream в уже созданный текстовый документ, с флагом текстовый документ...
Код, который файл пишет, покажите.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2014, 22:07     Копирование в текстовый файл из потока fstream массива типа char #5
Цитата Сообщение от Divergence Посмотреть сообщение
так и должно быть
Пишите в файл не текстовые данные:
Цитата Сообщение от Divergence Посмотреть сообщение
декодирую GIF файл в BMP, затем записываю в буфер void*
Потом рассматриваете файл в текстовом редакторе (блокноте):
Цитата Сообщение от Divergence Посмотреть сообщение
при копировании этого буфера в файл у меня абракадабра дикая получается
Цитата Сообщение от Divergence Посмотреть сообщение
Я записываю fstream в уже созданный текстовый документ, с флагом текстовый документ...
На то, как будет выглядеть содержимое файла, при открытии в текстовом редакторе, это не влияет, а вот записывать и читать такие данные нужно в бинарном режиме, и используя бинарные методы.
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
25.06.2014, 22:17     Копирование в текстовый файл из потока fstream массива типа char #6
Однако, при копировании этого буфера в файл у меня абракадабра дикая получается...
Открывай файл HEX редактором.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.06.2014, 00:32     Копирование в текстовый файл из потока fstream массива типа char #7
Вот, кстати, одна из возможных проблем, если файл с не текстовыми данными открывается не в бинарном режиме.
Истинность конца файла
Divergence
 Аватар для Divergence
7 / 7 / 0
Регистрация: 19.06.2013
Сообщений: 174
26.06.2014, 01:17  [ТС]     Копирование в текстовый файл из потока fstream массива типа char #8
Всем спасибо большое за советы!
Изменил тип файла на бинари, заливаю туда инфу, открываю НЕХ редактором.
Но, по прежнему не могу понять это чушь или мой битмап(((
Есть какие-то способы формализовывать, накладывать схему/сетку на бинари файлы, чтобы они отображались хоть как-то понятнее??
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.06.2014, 01:40     Копирование в текстовый файл из потока fstream массива типа char #9
Цитата Сообщение от Divergence Посмотреть сообщение
Изменил тип файла на бинари
Это как? Расширение сменили?
Цитата Сообщение от Divergence Посмотреть сообщение
Но, по прежнему не могу понять это чушь или мой битмап(((
Ваш битмап.
Цитата Сообщение от Divergence Посмотреть сообщение
Есть какие-то способы формализовывать, накладывать схему/сетку на бинари файлы, чтобы они отображались хоть как-то понятнее??
Под "как-то понятнее", что подразумевается? Что, собственно, хотите увидеть? Байты - они и есть байты.
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
26.06.2014, 03:37     Копирование в текстовый файл из потока fstream массива типа char #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Вот, кстати, одна из возможных проблем, если файл с не текстовыми данными открывается не в бинарном режиме.
При записи смешнее:

C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main()
{
   unsigned char arr[]={0x0A,0x0D};
   FILE* out = fopen("test.txt","w");
   fwrite((void*)arr,sizeof(arr),1,out);
   fclose(out);
   return 0;
}
Запишется три байта.

Цитата Сообщение от Divergence Посмотреть сообщение
Но, по прежнему не могу понять это чушь или мой битмап(((
Что пишется-то? BMP - его показывает любая гляделка. Если структура - структуру и читать. Да, в HEX по известным смещениям. Если только растр - можно сохранить в RAW c именем высотахширинахbpp.raw и смотреть Irfan View.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.06.2014, 03:59     Копирование в текстовый файл из потока fstream массива типа char #11
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
При записи смешнее:
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Запишется три байта.
А при чтении ещё смешнее: считается опять два байта.
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
26.06.2014, 04:02     Копирование в текстовый файл из потока fstream массива типа char #12
Цитата Сообщение от alsav22 Посмотреть сообщение
А при чтении ещё смешнее: считается опять два байта.
Ну, это если читать будет код того же кодера, если другого - то квест может получить дальнейшее развитие.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2014, 00:01     Копирование в текстовый файл из потока fstream массива типа char
Еще ссылки по теме:

C++ Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ?
C++ В чем отличие двумерного массива типа char от массива указателей на char?
Запись в файл и последующее чтение массива типа char C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Divergence
 Аватар для Divergence
7 / 7 / 0
Регистрация: 19.06.2013
Сообщений: 174
27.06.2014, 00:01  [ТС]     Копирование в текстовый файл из потока fstream массива типа char #13
Народ... я решил создать конкретную тему с реальным примером (то, что именно у меня не получается). Несмотря на все мои старания - все оборачивается провалом... Это описание того, о чем я спрашивал тут но конкретнее.
Если Вам интересно, можете заглянуть:
Вместо информации о пикселях копируется мусор. WIC codecs, CopyPixels
Yandex
Объявления
27.06.2014, 00:01     Копирование в текстовый файл из потока fstream массива типа char
Ответ Создать тему
Опции темы

Текущее время: 06:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru