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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как встроить текстовый файл в программу? 
:(
    Опции темы
victor79
Дата 19.10.2013, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист
*


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

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



есть большой текстовый файл, и его нужно не впихивая в файл *.cpp приделать в компиляцию и в программе получить на него указатель const char*. Вроде через ресурсы, но как именно?
PM MAIL WWW   Вверх
volatile
Дата 20.10.2013, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



ОС?
PM MAIL   Вверх
Alca
Дата 20.10.2013, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

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



Код

const char data[] = 
{
    #include "data.txt"
};



--------------------
PM WWW ICQ Skype Jabber   Вверх
volatile
Дата 20.10.2013, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Alca, 
  • Файл будет в статической памяти а не в ресурсах
  • Текстовый файл долже будет предварительно отформатирован. т.е. не должен содержать спец.символы например: кавычки, обратные слеши, и т.д.
  • Оно вообще не скомпилицца  smile

PM MAIL   Вверх
Alexeis
Дата 21.10.2013, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



  Ну cpp файл легко предварительно обработать заэкранирововав спец символы слешами.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM ICQ Skype   Вверх
volatile
Дата 21.10.2013, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(Alexeis @  21.10.2013,  08:30 Найти цитируемый пост)
Ну cpp файл легко предварительно обработать заэкранирововав спец символы слешами. 

Ага, еще и про переводы строк не забыть.
здесь в пору отдельное приложение писать для этого  smile 
и не забыть вставить енто приложение в пре билд экшн.
Хороший ответ для ТС, спрашивающего как впихнуть простой файл.  smile 

PM MAIL   Вверх
vinter
Дата 21.10.2013, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



volatile, можно просто обернуть в R"()"  smile 
Но, вообще говоря, нормальное внедрение ресурсов это процедура ОС-зависимая, да. 


--------------------
Мой блог
PM MAIL WWW   Вверх
volatile
Дата 21.10.2013, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(vinter @  21.10.2013,  15:53 Найти цитируемый пост)
можно просто обернуть в R"()"

это если компилятор поддерживает.  smile
далеко не везде еще С++11

Но главный минус здесь не в этом, а в том что данные будут занимать статич. память.
По молодости я тоже так впихивал свои данные в тело программы, даже утилитку написал, для приведения любого файла к виду:
Код

unsigned char file[467] = {
0x23,0x20,0x63,0x68,0x72,0x6F,0x6F,0x74,0x20,0x2F,0x6D,0x6E,
0x74,0x2F,0x67,0x65,0x6E,0x74,0x6F,0x6F,0x20,0x2F,0x62,0x69,
...
вот проверил, работает утилитка
Но потом понял, что это не камильфо. Такие вещи нужно впихивать в ресурсы.
Собстенно для этого их (ресурсы) и придумали.

PM MAIL   Вверх
Alca
Дата 21.10.2013, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

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



Цитата

Собстенно для этого их (ресурсы) и придумали.

Ну ка расскажи нам про ресурсы в Линуксе


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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(Alca @  21.10.2013,  18:52 Найти цитируемый пост)
Ну ка расскажи нам про ресурсы в Линуксе 

а я собственно в рассказчики вам не нанимался.

Вот чтобы не рассказывать про ресурсы в линукс, (или может быть в ZX Spectrum?), и был задан первый вопрос
 smile 

Это сообщение отредактировал(а) volatile - 21.10.2013, 19:13
PM MAIL   Вверх
victor79
Дата 21.10.2013, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист
*


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

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



у меня под windows компилятор mingw. Жаль что нельзя кросплатформенное, т.к. планируется таковое приложение.
PM MAIL WWW   Вверх
volatile
Дата 22.10.2013, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



victor79, ну вставьте в тело программы, раз нужно кроссплатформенно.

PM MAIL   Вверх
vinter
Дата 22.10.2013, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



Если приложение кросс-платформенное и в нём используется GUI, то очень велик шанс, что GUI фреймворк, который ты используешь, уже имеет кросс-платформенные средства для хранения ресурсов.


--------------------
Мой блог
PM MAIL WWW   Вверх
Alexeis
Дата 22.10.2013, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



  Строковая константа в области данных будет не хуже работать чем ресурсы. Под виндой такие данные попадут в readonly секцию экзешника и скорее всего не будут загружаться в память без особой необходимости. Или же выгружаться из оперативки (без свопа в page файл т.е. почти мгновенно). Как под линуксом хз, но если его не писали криворукие программисты, то он тоже должен использовать константность памяти для оптимизации размещения.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0683 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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