Преобразование строки в имя переменной или тип переменной

Можно ли преобразовать строки в переменные (и наоборот), выполнив что-то вроде:

makeVariable("int", "count"); 

или

 string fruit; cin >> fruit; // user inputs "apple" makeVariable(fruit, "a green round object"); 

и затем сможете просто получить к нему доступ, делая что-то вроде:

 cout << apple; //a green round object 

Заранее спасибо!

Нет, это невозможно. Подобная функциональность распространена на языках сценариев, таких как Ruby и Python, но C ++ работает совсем по-другому. В C ++ мы стараемся выполнять как можно большую часть работы программы во время компиляции . Иногда мы можем делать что-то во время выполнения , и даже тогда хорошие программисты на С ++ найдут способ выполнить эту работу уже во время компиляции.

Если вы знаете, что собираетесь создать переменную, тогда создайте ее сразу:

 int count; 

То, что вы, возможно, не знаете заранее, – это значение переменной, поэтому вы можете отложить это на время выполнения:

 std::cin >> count; 

Если вы знаете, что вам понадобится коллекция переменных, но не точно, сколько из них затем создадут карту или вектор :

 std::vector counts; 

Помните, что имя переменной – не что иное, как имя – способ для дальнейшего использования этой переменной. В C ++ невозможно и не полезно отложить присвоение имени переменной во время выполнения. Все, что нужно сделать, – сделать ваш код более сложным, а ваша программа медленнее.

Вы можете использовать карту.

 map numbers; numbers["count"] = 6; cout << numbers["count"]; 

Возможно, вы захотите посмотреть на карту C ++ .

Начальные программисты задают этот вопрос в отношении каждого языка. Есть группа компьютерных языков, для которых ответ на этот вопрос «да». Это динамические интерактивные языки , такие как BASIC, Lisp, Ruby, Python. Но подумайте: переменные имена существуют только в коде, для удобства программиста. Имеет смысл только определить новую переменную во время запуска программы, если есть человек, который затем будет вводить имя переменной в новый код. Это верно для интерактивной языковой среды, а не для компилируемых языков, таких как C ++ или Java. В C ++, к моменту запуска программы и создания мнимой новой переменной, никто не будет писать код, который будет использовать эту новую переменную.

Вместо этого вам нужна возможность связать имя с объектом во время выполнения, чтобы код, а не люди, мог использовать это имя для поиска объекта. Как уже отмечали другие люди, функция map стандартной библиотеки C ++ дает вам эту возможность.

Нет. C ++ статически типизирован, и это противоречит всей этой парадигме.

Я видел этот тип функциональности, реализованный ранее, сохраняя переменные на stl-карте.

По крайней мере, для (наоборот) есть возможность с инструкцией препроцессора stringify # . См. Этот ответ о том, как преобразовать имя переменной C ++ в строку.

ну, я думаю, вы не можете делать переменные динамики, но вы можете использовать некоторую функцию для записи новой переменной и ее значения в любом внешнем текстовом файле и получить доступ к ее значению из этого файла, где когда-либо понадобится (вы также можете удалить динамическую переменную, удалив ее из текстового файла.)

теория: переменные – это места в памяти, где мы храним данные, идентифицируемые по имени, мы можем хранить данные в текстовом файле, если процессор не позволяет хранить его в регистрах, и мы можем получить доступ к его значению, выполнив поиск его идентификатора (имя переменной ) int в текстовом файле, наши данные будут рядом с ним.

его просто идея, она должна работать, но я думаю, что это будет не очень просто, и программа ур будет вынуждена платить с точки зрения скорости.

  • Как выполнить команду для каждой строки файла?
  • замените String другим в java
  • Как удалить недопустимые символы из путей и имен файлов?
  • Как добавить символ в std :: string?
  • Как получить ширину строки на Android?
  • Как создать случайную строку фиксированной длины в Go?
  • Как инициализировать строку с помощью ""?
  • Как вы можете вводить пробелы с помощью scanf?
  • Как использовать stringByAddingPercentEncodingWithAllowedCharacters () для URL-адреса в Swift 2.0
  • Преобразование в String с использованием ("" + ) плохой практики?
  • Как можно объединить две строки?
  • Interesting Posts

    Могу ли я прочитать hash-часть URL-адреса моего серверного приложения (PHP, Ruby, Python и т. Д.)?

    Как связать приложение Facebook с существующей страницей вентилятора

    Как добавить JPEG в каталог активов в Xcode?

    Добавить текст / метку на ссылки в графе D3 force

    Почему JVM по-прежнему не поддерживает оптимизацию хвостового вызова?

    Почему использование назначить плохо?

    Индикатор выполнения в VBA Excel

    Интерфейс C # – R

    Java: доступ к частному конструктору с параметрами типа

    Скопируйте файлы с исходной структурой папок, но в формате 8.3

    Почему я получаю «Полученное фатальное предупреждение: протокол_версии» или «не проверено подлинностью» от Maven Central?

    Как запустить 64-разрядный процесс из 32-битного процесса

    Как я могу контролировать громкость звука приложения Modern-UI?

    Почему мой пользователь не вводит корректное соответствие stdin?

    Не удается получить IP-адрес IPV6 с любым адаптером 802.11g

    Давайте будем гением компьютера.