Название: Подстановка строк. Отправлено: cya-st от Сентябрь 17, 2009, 11:49 Всем привет! Подскажите пожалуйста как или где в програме можно хранить и использовать строку большого размера. Например: #define MY_STR "kjsfdk...", но проблема в том что в дефайне я немогу переносить строку. Надеюсь я правильно выразился.
Название: Re: Подстановка строк. Отправлено: Barmaglodd от Сентябрь 17, 2009, 11:57 Зачем define?
1. const char* (глобальная переменная) 2. сохранить в ресурс 3. сохранить в файл и читать из него Название: Re: Подстановка строк. Отправлено: BRE от Сентябрь 17, 2009, 12:08 Всем привет! Подскажите пожалуйста как или где в програме можно хранить и использовать строку большого размера. Например: #define MY_STR "kjsfdk...", но проблема в том что в дефайне я немогу переносить строку. Надеюсь я правильно выразился. Так делать конечно не стоит. На счет переноса строк в дефайнах: Код
Название: Re: Подстановка строк. Отправлено: cya-st от Сентябрь 17, 2009, 12:13 Мне больше define нравится, почему его нежелательно использовать?
Цитировать Так делать конечно не стоит. Название: Re: Подстановка строк. Отправлено: spectre71 от Сентябрь 17, 2009, 12:37 Всем привет! Подскажите пожалуйста как или где в програме можно хранить и использовать строку большого размера. Например: #define MY_STR "kjsfdk...", но проблема в том что в дефайне я немогу переносить строку. Надеюсь я правильно выразился. 1) Насколько большого размера?2) в дефайне можно переносить строку Код: #define MY_STR "1234567890" \ 3) Можно еще так Код: const char* MY_STR = "1234567890" Название: Re: Подстановка строк. Отправлено: cya-st от Сентябрь 17, 2009, 12:52 Цитировать 1) Насколько большого размера? Размер гдето до 30кБ.Название: Re: Подстановка строк. Отправлено: BRE от Сентябрь 17, 2009, 13:04 Мне больше define нравится, почему его нежелательно использовать? define исторически остался от C. Сейчас рекомендуется вместо него использовать enum и const.#define это макрос, т.е. все что идет за ним просто подставляется в текст программы место его имени. С этим могут быть проблемы: Код эта конструкция развернеться в: Код Соответственно результат будет не 40, как хотелось бы, а 30. С константой такое произойти не может. #define A 10.123 Константа расположена в одном месте, макрос же будет подставлять это число там где будет прописано имя макроса. Для чисел с плавающей точкой это меннее эффективно. Также для строк. Если макрос будет использован в нескольких файлах, копия этой строки будет в каждой объектной единице (хотя компилятор сможет это оптимизировать, но это будет заслуга компилятора). Нет проверки типов на этапе компиляции. У константы задается тип, который компилятор сможет проверить, у макроса его нет. Макрос не принадлежит пространствам имен. Сейчас не вспомню все проблемы, но они есть. Название: Re: Подстановка строк. Отправлено: spectre71 от Сентябрь 17, 2009, 13:09 Цитировать 1) Насколько большого размера? Размер гдето до 30кБ.Если подстановка в одном файле(в одном obj), можешь использовать define, если в несколько, то лучше const char* Название: Re: Подстановка строк. Отправлено: Igors от Сентябрь 17, 2009, 13:25 Цитировать 1) Насколько большого размера? Размер гдето до 30кБ.- добавляем файл 30Kb в qrc и обновляем проект - создан qrc_MyPrj.cpp файл - из созданного файла забираем уже оформленные данные, нет никаких проблем с переводами строк и т.п. Хотя и просто загрузить из ресурса - одно удовольствие Название: Re: Подстановка строк. Отправлено: cya-st от Сентябрь 17, 2009, 13:25 Всем спасибо за помощь. Буду использовать const char*.
|