автоматическое создание переменных в С++

программирование с++

1)при помощи какой функции в С++ создать переменную, либо массив, с произвольным именем ? Может В с++ есть аналог функции execute() как в vbscript ?
2) как обращаться к переменным или массивам, передав AnsiString с частью имени ?

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

Примечание:
в общем суть вот в чем: я сделал функцию, которая читает текст из текстового файла. Текст представляет собой имена параметров и их значения.
одна функция читает текст, делит его на части: имена параметров и значения, другая делает execute(Param = Value), либо если это массив, то действие чуть посложнее.
на vbscript я реализовал подобную функцию за полчаса.

как можно на С++ реализовать чтение параметров из файла и раздачу значений ? Подкиньте хотяб идею, потому что в С я новичок

Примечание:
Чтение на С++ я уже сделал, а вот с присвоением значений чтото задумался.

Примечание:
Спасибо за хорошие ответы, жаль это не совсем то, что мне нужно.
Я сделал на С функцию чтения данных из текстового файла.
Мой файл очень прост:
------------------------------------------------------------------------
menuThisChoice = "главное меню, 2параметр"
menuThisIndex = "0"
filterChoice = "все"
sortingChoice = "по дате добавления"
------------------------------------------------------------------------
В нем содержатся некоторые переменные, которых я даже не создавал в программе. Дальше есть функция <Read> которая читает файл и мои комманды.
Весь текст считывается по одному знаку и помещается в массив Words в элемент под номером WordsIndex. Каждый символ сравнивнивается с массивом ключевых символов, при совпадении с которыми происходит действие: объявление типа данных (слова или символы разметки). Если тип отличается от предыдущего, получается изменение типа данных и WordsIndex увеличивается на единицу. Все последующие считываемые символы присваиваются в words[wordsArray+1], т.е. следующий элемент массива words. Таким образом происходит разделение нужных мне слов и не нужных знаков разметки. Все слова в итоге оказываются друг от друга через один индекс и символы разметки также. Т.е. если все слова находятся в четных элементах массива, то символы разметки в нечетных.
Применительно к моему файлу получается следующее:
------------------------------------------------------------------------
<menuThisChoice> < = "> <главное меню> <, > <2параметр> <"
><menuThisIndex> < = "> <0> <"
>filterChoice> < = "> <все> <"
>sortingChoice> < = "> <по дате добавления> <">
------------------------------------------------------------------------

Примечание:
вот реализация функции

char s[2]; //временный контейнер для считанных знаков
AnsiString letter; //контейнер для того же
AnsiString lettersProfile[6][10][3]; //профили шаблонов знаков, для выполнения действий
int lettersProfileIndex; //индекс для зменения профилей
AnsiString lettersType; //текущий тип: слово или знаки разметки
AnsiString lettersLastType; //предыдущий тип
AnsiString words[10000]; //массив для разделенного текста, нечетных элементах знаки разметки, в четных слова.
int wordsIndex; //индекс массива слов для управления разделением

//профили определения типов данных
//1. Знаки разметки
lettersProfile[1][1][1] = "\n";
lettersProfile[1][1][2] = "symbols";
lettersProfile[1][2][1] = " ";
lettersProfile[1][2][2] = "symbols";
lettersProfile[1][3][1] = "=";
lettersProfile[1][3][2] = "symbols";
lettersProfile[1][4][1] = "/";
lettersProfile[1][4][2] = "symbols";
lettersProfile[1][4][3] = "4";
lettersProfile[1][5][1] = "|";
lettersProfile[1][5][2] = "symbols";
lettersProfile[1][5][3] = "3";
lettersProfile[1][6][1] = '"';
lettersProfile[1][6][2] = "symbols";
lettersProfile[1][6][3] = "2";
lettersProfile[1][7][1] = "$";
lettersProfile[1][7][2] = "symbols";
lettersProfile[1][7][3] = "5";
lettersProfile[1][8][1] = " ";
lettersProfile[1][9][1] = "anything else";
lettersProfile[1][9][2] = "words";

//2. слова
lettersProfile[2][1][1] = ",";
lettersProfile[2][1][2] = "symbols";
lettersProfile[2][2][1] = " ";
lettersProfile[2][2][2] = "symbols";
lettersProfile[2][3][1] = '"';
lettersProfile[2][3][2] = "symbols";
lettersProfile[2][3][3] = "1";
lettersProfile[2][4][1] = " ";
lettersProfile[2][5][1] = "anything else";
lettersProfile[2][5][2] = "words";

есть и еще профили для комментариев, гиперпараметров, сложных комманд, но это не суть важно.

Примечание:
Дальше сама функция:

void TForm1::read(AnsiString filename)
{
lettersProfileIndex = 1;
wordsIndex = 0;
FILE *F;
F = fopen("D:/MyProjects/actions.txt", "rt");
do
{
letter = fgets(s, 2, F);
if (feof(F)) break;

//блок распознавания типов данных

for (int i = 1; i <= 10; i++) {
if (letter == lettersProfile[lettersProfileIndex][i][1] || lettersProfile[lettersProfileIndex][i][1] == "anything else") {
if (lettersProfile[lettersProfileIndex][i][2] != "") {
lettersType = lettersProfile[lettersProfileIndex][i][2];
}
if (lettersProfile[lettersProfileIndex][i][3] != "") {
lettersProfileIndex = StrToInt(lettersProfile[lettersProfileIndex][i][3]);
}
break;
}
}

//блок расшифровки комманд

if (lettersType != lettersLastType) {
wordsIndex++;
words[wordsIndex] = "";
}

lettersLastType = lettersType;
words[wordsIndex] = words[wordsIndex] + letter;

}
while (true);

lettersType = "";
lettersLastType = "";
fclose(F);
}


В общем я получаю words[i] = имя переменной которую нужно создать
И words[i+1] = значение которое нужно присвоить

В vbscript у меня был ехеcute(words[i]& “ = “ words[i+1]) и все присваивалось и создавалось очень просто.
Как в С можно реализовать такую автоматизацию ?, потому что присваивать вручную значения тысячам переменных как то даже стыдно. Ведь есть компьютер, пусть он сам за меня все делает.
PS. Я конечно понимаю, что в С++ так функции не пишут, и здесь неканает vbscriptовская логика, но я еще только учусь. А еще странно что на задрипаном vbscript есть возможность такой абстрактизации, а в С++ нету.
Ответы:
Забудьте все что вы знали о программировании вообще и бейсик в частности и изучайте С++ снова, с нуля.
просто в плюсах это нереально. зато можно попробовать разобраться с мэнеджд-кодом в шарпе. метаданные предоставят подобные возможности.
1), re: Дополнение #2
Для этого существуют специальные библиотеки для интерпретации скриптов и взаимодействия их с программой, например для языка Lua.
2) Можно хранить свои переменные/массивы в контейнере типа ключ-значение.
С++ компилируемый язык и более строгий в этом смысле, зато код выполняется быстрее.
Хм... Посимвольный ввод - это очень долго (на больших файлах будет захлебываться). Лучше читать построчно и искать ключевые слова/символы. А решить самую проблемную часть можно. Для этого нужно воспользоваться ХЕШем.
Еще раз убеждаюсь, что Си придумали китайцы: "синь и сяут"...
Что-то подсказывает мне, что вы на С++ пытаетесь писать как на vbscript. Не получится. И дело тут не в том, какой язык лучше, а какой хуже. У них просто разные идеологии. Ну не скриптовый язык С++ и все тут. Почитайте книги по С++ с самого начала, попробуйте понять идеологию и архитектуру программ. Просто на плюсах так не пишут.
я с Вас тащусь. так описать задачу, что все запутались. ппц!


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.