The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Создание динамичных переменных в C++, !*! siegerstein, 28-Ноя-07, 17:38  [смотреть все]
Привет всем!

Возникла проблема создания динамичных переменных в C++.

К примеру, имееться переменная "value" типа char*, и имееться переменная "i" типа int.
Значение "i" не постоянное, и может меняться.
Нужно в цикле присоеденять значение "i" и названию переменной "value"

То есть должно выйти: value1, value2, value3...

for ( int i = 0; i < somevalue; i++ ) {
// Должно выйти соединение названий переменных

типа value + i;
или как на Perl $value$i

}

Зарание списибо за ответ.


  • Создание динамичных переменных в C++, !*! Michelnok, 18:06 , 28-Ноя-07 (1)
  • Создание динамичных переменных в 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++, !*! 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 ) - приложение падает даже не запустившись.

      Не знаете почему?




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру