Форум программистов, компьютерный форум CyberForum.ru

Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? - C++

Восстановить пароль Регистрация
 
Андрей1986
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 4
01.07.2016, 17:32     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #1
Подскажите пожалуйста, как решить такую задачку... весь поисковик перерыл в поисках ответа...

C++
1
2
3
4
5
6
7
8
9
10
11
12
//есть вот такие данные 
char b0[] = "тест1";
char b1[] = "тест2";
char qqq;
 
cin >> qqq; //qqq ввожу цифры от от 0 до 9. К примеру сейчас char qqq = '1';
 
// например в DOS можно включить расширенное применение переменных вот так (%имя% - основная переменная, !имя! - расширенная дополнительная):
!b%qqq%! // 1 результат обработки получаем "!b1!" а потом результат "тест2"
 
//как получить расширенную переменную b1, чтобы это было не текстовое значение, а расширенная переменная как например DOS?
cout << b0 << ('b'+qqq); //как получить ожидаемый результат "тест1тест2" ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2016, 17:32     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1?
Посмотрите здесь:

Как получить имя рабочего стола? C++ Builder
C++ Как написать имя консольного окна из переменной
C++ Как написать имя консольного окна из переменной
C++ Как вывести имя переменной?
Как присвоить переменной имя, взятое из вектора C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,898
Завершенные тесты: 1
01.07.2016, 19:29     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #2
Конкретно в этом виде - никак. Имена переменных используются только при компиляции, в машинном коде остаются лишь странные непонятные числа. Необходимо самому реализовывать логику, которая позволяет связывать имена переменных с ними самими.

Впрочем, конкретно для приведённой задачи вполне сойдёт обычный массив:
C++
1
2
3
4
const char* b[] = {"тест1", "тест2"};
int index = 0;
cin >> index;
cout << b[index];
Андрей1986
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 4
23.07.2016, 22:03  [ТС]     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #3
Спасибо за пример. Благодаря данной идеи пошел простым путем через массив указателей.
Но все равно ради интереса данный вопрос остается открытым. Быть может когда-то у кого-то идея решения данного вопроса появится.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
24.07.2016, 09:00     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//g++  4.9.3
 
#include <iostream>
#include <map>
#include <string>
 
int main()
{
    std::map<std::string, int> vars {{"b1", 90}, {"b2", 45}, {"b3", 78}, {"var",64}};
    std::string varName;
    while(std::cin>>varName){
        std::cout << varName << ": " << vars[varName] << std::endl;
    }
}
http://rextester.com/NMGHH64261
_Ivana
2192 / 1397 / 124
Регистрация: 01.03.2013
Сообщений: 4,158
Записей в блоге: 2
24.07.2016, 19:25     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #5
В своем интерпретаторе ради интереса сделал такое поведение особой формы def: если следующим элементом идет символ, то с ним связывается вычисленное значение, если не символ - то это вычисляется и приводится к символу (например, (++ "a" 1)) и дефайнится полученный символ. Ортодоксы сказали что это извращение Но мне сделать так было нетрудно, у меня интерпретатор. А в компилируемых языках это, подозреваю, не так просто - оптимизирующий компилятор может вообще переменную не создать, и потом к ней хоть по имени хоть по "странным непонятным числа" будет не достучаться.
Хрисипп
 Аватар для Хрисипп
17 / 27 / 8
Регистрация: 09.02.2016
Сообщений: 212
24.07.2016, 22:13     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #6
Цитата Сообщение от Андрей1986 Посмотреть сообщение
вопрос остается открытым
хочешь увидеть это, что ли?
C++
1
2
3
4
5
6
#define Ds(x,y) x##y
int main()
{
  int b1,b2,b3; // и т.д
  b1=666;
   cout<<Ds(b,1);
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.07.2016, 10:26     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #7
Хрисипп, человек спрашивал, как, грубо говоря, в рантайме вычислить имя переменной и обратиться к ней по этому имени. Ваш код работает не в рантайме, а ещё до компиляции, на стадии препроцессирования.
Хрисипп
 Аватар для Хрисипп
17 / 27 / 8
Регистрация: 09.02.2016
Сообщений: 212
25.07.2016, 13:20     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #8
Цитата Сообщение от silent_1991 Посмотреть сообщение
человек спрашивал, как, грубо говоря, в рантайме вычислить имя переменной
мне этот вопрос показался слишком нелогичным
zer0mail
2189 / 1872 / 187
Регистрация: 03.07.2012
Сообщений: 6,665
Записей в блоге: 1
26.07.2016, 14:12     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #9
Можно имена переменных и их значения писать в map.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
26.07.2016, 15:29     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #10
Цитата Сообщение от zer0mail Посмотреть сообщение
Можно имена переменных и их значения писать в map.
пост #4?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2016, 22:46     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1?
Еще ссылки по теме:

Можно ли представить значение переменной как имя файла? C++
Как открыть файл, если имя файла является переменной C++
C++ Как вывести имя переменной, передаваемой в фукцию?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zer0mail
2189 / 1872 / 187
Регистрация: 03.07.2012
Сообщений: 6,665
Записей в блоге: 1
26.07.2016, 22:46     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #11
Croessmah, точно.
Не люблю вглядываться в чистый код и делать реконструкцию (кроме совсем уж тривиальных случаев).
Yandex
Объявления
26.07.2016, 22:46     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1?
Ответ Создать тему
Опции темы

Текущее время: 05:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru