|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.10.2015, 23:44 | #1 |
Регистрация: 28.09.2008
Сообщений: 7
|
Инициализация строки числами
Нужно проинициализировать элемент массива, объявленный как строка char *, значениями, которые объявлены через #define
Последний элемент в строке будет = 0 Например, Код:
В каждом элементе массива может быть разное количество значений в такой строке, поэтому показалось логичным объявить элемент строкой. Реально строка будет использоваться как массив чисел, заканчивающийся нулём. То есть технически вполне можно хранить в строке такие числа. Но как это объявить, имея структуру и дефайны? Может быть, есть какое-нибудь определение массива int с плавающей длиной? Последний раз редактировалось Stilet; 23.10.2015 в 08:41. |
23.10.2015, 07:42 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Код:
|
24.10.2015, 14:19 | #3 |
Регистрация: 28.09.2008
Сообщений: 7
|
не очень понял
STRINGIFY(FLAG1) преобразует один int в строку а как объявить несколько int в строку? например, Код:
У меня объявляется массив из 150 элементов, в каждом строка str. В каких-то элементах массива она пустая, в каких-то должна содержать одно, два и пр. количество символов. Значения символов у меня объявлены дефайнами, которые используются также в других местах программы. Хочется их запихнуть в инициализацию массива. Вместо char * можно объявить, например, с запасом char str[20] или int[20], и заполнять первые элементы, а остальные не использовать. Но любопытно, есть ли вариант объявления, который использовал бы каждый раз требуемое количество символов вопрос можно сузить просто к инициализации строки безо всякого массива Код:
Последний раз редактировалось Stilet; 24.10.2015 в 15:41. |
25.10.2015, 17:40 | #4 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Код:
1. в зависях вида: Код:
2. Код:
Код:
3. вам нужно понять, как работает препроцессор сейчас вы похоже не понимаете, что делает STRINGIFY 4. вы не можете закладываться на беззнаковость типа char а значит, вам гарантируется лишь диапазон от нуля до 127 |
29.10.2015, 02:24 | #5 |
Регистрация: 28.09.2008
Сообщений: 7
|
signed-unsigned - можно указать тип unsigned char
Вариант со stringify const unsigned char *str = TOSTRING(VAL1) TOSTRING(VAL151); даёт строку "1151" а мне нужно два байта со значениями 1, 151 И ноль в конце - но это не суть, это можно сделать, если понять, как в принципе инициализировать строку интеждерами. Может быть, так вообще нельзя проинициализировать, я же не знаю. Я могу сделать с помощью массива заведомо больше длины, чем нужно unsigned char str3[5] = {1,151, 0, 0, 0}; На другом форуме мне ещё предложили std::string str = { VAL1, VAL151, 0}; это нормально работает, но используется класс string Вопрос любопытен в принципе - можно ли инициализировать просто строку просто числами, безо всяких классов |
29.10.2015, 06:49 | #6 |
Подтвердите свой е-майл
Регистрация: 12.11.2014
Сообщений: 470
|
Динамические массивы инициализируются только в одном варианте: все элементы конструктором по умолчанию. Ну есть ещё возможность формально динамическому массиву скормить статическую инициализацию. Но как ты собираешься её подстраивать к количеству элементов? Если он фактически статический, тогда фокус проходит. А с истинно динамическим не получится.
Последний раз редактировалось taras-proger; 29.10.2015 в 06:51. |
29.10.2015, 09:01 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
инициализация | vibraxo | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 11.06.2013 03:39 |
вывести вектор, элементы которого являются наибольшими числами каждой строки матрицы | Artur1992 | Помощь студентам | 1 | 23.11.2010 11:35 |
Инициализация | Aleksey1989 | Общие вопросы Delphi | 10 | 11.09.2010 21:50 |
Pelles C: операции над двоичными числами в файле, удаление строки из массива | TripleX | Помощь студентам | 12 | 13.06.2010 14:54 |
Инициализация | Krumyura | Общие вопросы C/C++ | 5 | 20.03.2010 23:37 |