- Создание динамичных переменных в C++, Michelnok, 18:06 , 28-Ноя-07 (1)
- Создание динамичных переменных в C++, siegerstein, 18:33 , 28-Ноя-07 (2)
>>Возникла проблема создания динамичных переменных в C++. > >C++ - компилируемый язык, а не интерпретируемый. Но решить эту проблему все же как-то возможно ?!?
- Создание динамичных переменных в C++, elvenic, 19:10 , 28-Ноя-07 (3)
- Создание динамичных переменных в C++, siegerstein, 07:18 , 29-Ноя-07 (6)
>[оверквотинг удален] > std::string newValue = strm.str(); > > // do something with newValue > // ... > >} > >То есть, создаете обьект класса stringstream который занимается форматированием строк (value может >быть или char *, или std::string), а потом из этого обьекта >получаете уже результирующую строку newValue. Задача стоит не в конкатенации переменных а в создании переменной из имен, то есть есть к примеру переменная value, нужно поочередно прилиплять к примеру числа от 1..10 так, чтобы создавались переменные value1, value2, value3 и т.д. И чтобы к этой переменной можно было нормально обратиться как к другим переменным. Вот про что я говорил. А этот пример по всей видимости соединяет значение одной переменной с другой. Но реальной переменной он не создает. Он создает к примеру переменную newValue которая имеет значение value + i, а нужно было создать переменную value + i. Смотрел как это реализовать, можно TCL + C++ или писать на Java. Есть идеи как реализовать штатными средствами C++? Масивы не подходять.
- Создание динамичных переменных в C++, elvenic, 13:44 , 29-Ноя-07 (10)
- Создание динамичных переменных в C++, siegerstein, 16:33 , 29-Ноя-07 (11)
>[оверквотинг удален] > std::string val = strm.str(); > > > // Create a value >in the map. > myMap[key] = val; > > } > >Теперь доступ к таким "переменным" - myMap["value1"], myMap["value2"] и т. д. Ура! Работает! Спасибо elvenic! Вот рабочий пример: #include <iostream> #include <sstream> #include <map> std::map <std::string, std::string> myMap; int main() { for ( int i = 0; i < 10; i++ ) { std::stringstream strm; // Create a key for the map. strm << "value" << i; std::string key = strm.str(); // Clear the stingstream. strm.rdbuf()->str(""); // Create value. strm << "a" << i; std::string val = strm.str(); // Create a value in the map. myMap[key] = val; } std::cout << myMap["value1"] << std::endl; std::cout << myMap["value2"] << std::endl; std::cout << myMap["value3"] << std::endl; return 0; }
- Создание динамичных переменных в C++, Alu, 06:26 , 29-Ноя-07 (5)
- Создание динамичных переменных в C++, siegerstein, 07:21 , 29-Ноя-07 (7)
>//Вариант без STL: > >for(int i = 0; i < somevalue; i++) >{ > char TempBuff[TEMP_BUFF_SOME_LENGTH]; > snprintf(TempBuff, TEMP_BUFF_SOME_LENGTH, "%s %d\0", value, i); >} То же случай вроде. В C не очень...
- Создание динамичных переменных в C++, phpcoder, 10:34 , 29-Ноя-07 (8)
- Создание динамичных переменных в C++, DeadMustdie, 11:18 , 29-Ноя-07 (9)
- Создание динамичных переменных в C++, f00l, 07:38 , 30-Ноя-07 (12)
- Создание динамичных переменных в C++, siegerstein, 17:36 , 30-Ноя-07 (13)
> >Зачем такие сложности. > > Создай двух мерный массив. > char ** value; > int i; > value = new ( char *)[i]; > > Вот у тебя массив динамических переменных. Спасибо, пробывал работает. Но вот в Qt4 не работает. Сильно спростил, чтобы показать суть: QLCDNumber **lcd = new QLCDNumber *[10]; ... for ( int i = 0; i < 10; ++i ) { ... lcd[i] -> setNumDigits ( 3 ); ... } Вылетает в кору (Ошибка сегментирования) Как только я хочу применить к объекту какой-то метод ( в данном случае setNumDigits ) - приложение падает даже не запустившись. Не знаете почему?
- Создание динамичных переменных в C++, siegerstein, 17:44 , 30-Ноя-07 (14)
>[оверквотинг удален] > lcd[i] -> setNumDigits ( 3 ); >... >} > >Вылетает в кору (Ошибка сегментирования) > >Как только я хочу применить к объекту какой-то метод ( в данном >случае setNumDigits ) - приложение падает даже не запустившись. > >Не знаете почему? Вот это глюк. На сайте показывает lcd -> setNumDigits ( 3 ); а должно быть lcd <квадратная скобка> i <квадратная скобка> -> setNumDigits ( 3 ); На почте и при ответе все нормально... - Создание динамичных переменных в C++, Michelnok, 17:47 , 30-Ноя-07 (15)
- Создание динамичных переменных в C++, Michelnok, 17:48 , 30-Ноя-07 (16)
- Создание динамичных переменных в C++, Michelnok, 17:52 , 30-Ноя-07 (17)
- Создание динамичных переменных в C++, siegerstein, 17:55 , 30-Ноя-07 (19)
>>Знаем конечно. После new QLCDNumber *[10] каждый lcd[i] содержит мусор. Тебе сначала >>надо сделать что-то типа >>lcd[i] = new QLCDNumber(); >>а потом уже пытаться обращаться к lcd[i]->anything > >Что-то покоцался текст в предыдущем посте. Я про это и говорю... У меня то же ( см. выше )
- Создание динамичных переменных в C++, siegerstein, 17:53 , 30-Ноя-07 (18)
>[оверквотинг удален] >>} >> >>Вылетает в кору (Ошибка сегментирования) >> >>Не знаете почему? > >Знаем конечно. После new QLCDNumber *[10] каждый lcd[i] содержит мусор. Тебе сначала >надо сделать что-то типа >lcd[i] = new QLCDNumber(); >а потом уже пытаться обращаться к lcd[i]->anythingСпасибо добрый человек, работает! Извените за ламерские вопросы, просто начинающий :)
- Создание динамичных переменных в C++, siegerstein, 18:21 , 30-Ноя-07 (20)
И так, небольшой итог как можно решить задачу:QLCDNumber **lcd = new QLCDNumber *[15]; lcd [ i ] = new QLCDNumber; lcd [ i ] -> setNumDigits ( 3 ); lcd [ i ] -> display ( L ); Это пример для Qt. Конечно вместо QLCDNumber ставим нужный тип данных. Шаблон понятный. Темы закрыта. БОЛЬШОЕ спасибо всем кто помогал!
|