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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Андрей1986
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 4
#1

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

01.07.2016, 17:32. Просмотров 325. Ответов 10
Метки нет (Все метки)

Подскажите пожалуйста, как решить такую задачку... весь поисковик перерыл в поисках ответа...

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++ Как написать имя консольного окна из переменной
C++ Как написать имя консольного окна из переменной
C++ Как получить имя нажатой клавиши
C++ Как можно получить имя исполняемого модуля проги?
C++ Как вывести имя переменной?
Как присвоить переменной имя, взятое из вектора C++
Можно ли представить значение переменной как имя файла? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1599 / 991 / 117
Регистрация: 27.09.2009
Сообщений: 1,910
Завершенные тесты: 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
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12512 / 7074 / 794
Регистрация: 27.09.2012
Сообщений: 17,466
Записей в блоге: 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
2584 / 1593 / 140
Регистрация: 01.03.2013
Сообщений: 4,559
Записей в блоге: 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++
4949 / 3025 / 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
2308 / 1934 / 192
Регистрация: 03.07.2012
Сообщений: 6,924
Записей в блоге: 1
26.07.2016, 14:12     Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? #9
Можно имена переменных и их значения писать в map.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12512 / 7074 / 794
Регистрация: 27.09.2012
Сообщений: 17,466
Записей в блоге: 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++
Как получить биты переменной? C++
Как получить имя файла для дальнейшей работы с этим файлом? C++

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

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

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