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

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

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

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

01.07.2016, 17:32. Просмотров 356. Ответов 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" ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2016, 17:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1? (C++):

Как вывести имя переменной? - C++
#define PRINT(var_) std::cout &lt;&lt; #var_ &lt;&lt; &quot;: &quot; &lt;&lt; var_ &lt;&lt; std::endl; template&lt;typename T&gt; void print(T obj) { PRINT(obj); } ...

Как назначить имя новой переменной в new - C++
Здравствуйте, 1)Функция должна создавать новый объект структуры. struct Wagen { int weight;; char clas; }; Функция: void...

Как объявить имя новой переменной в new - C++
Здравствуйте, 1)Функция должна создавать новый объект структуры : struct Wagen { int weight;; char clas; };

Как написать имя консольного окна из переменной - C++
чтобы поменять имя консоли надо написать system(&quot;title ima_okna&quot;); а как вместо тектста ima_okna подставить переменную, system(&quot;title...

Как написать имя консольного окна из переменной - C++
чтобы поменять имя консоли надо написать system(&quot;title ima_okna&quot;); а как вместо тектста ima_okna подставить переменную, ...

Как вывести имя переменной, передаваемой в фукцию? - C++
Как это сделать? void func(int arg) { cout &lt;&lt; } int main() { int a1 = 1;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
01.07.2016, 19:29 #2
Конкретно в этом виде - никак. Имена переменных используются только при компиляции, в машинном коде остаются лишь странные непонятные числа. Необходимо самому реализовывать логику, которая позволяет связывать имена переменных с ними самими.

Впрочем, конкретно для приведённой задачи вполне сойдёт обычный массив:
C++
1
2
3
4
const char* b[] = {"тест1", "тест2"};
int index = 0;
cin >> index;
cout << b[index];
1
Андрей1986
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 4
23.07.2016, 22:03  [ТС] #3
Спасибо за пример. Благодаря данной идеи пошел простым путем через массив указателей.
Но все равно ради интереса данный вопрос остается открытым. Быть может когда-то у кого-то идея решения данного вопроса появится.
0
Croessmah
Эксперт CЭксперт С++
13208 / 7479 / 840
Регистрация: 27.09.2012
Сообщений: 18,388
Записей в блоге: 3
Завершенные тесты: 1
24.07.2016, 09:00 #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
1
_Ivana
3149 / 1776 / 152
Регистрация: 01.03.2013
Сообщений: 4,981
Записей в блоге: 2
24.07.2016, 19:25 #5
В своем интерпретаторе ради интереса сделал такое поведение особой формы def: если следующим элементом идет символ, то с ним связывается вычисленное значение, если не символ - то это вычисляется и приводится к символу (например, (++ "a" 1)) и дефайнится полученный символ. Ортодоксы сказали что это извращение Но мне сделать так было нетрудно, у меня интерпретатор. А в компилируемых языках это, подозреваю, не так просто - оптимизирующий компилятор может вообще переменную не создать, и потом к ней хоть по имени хоть по "странным непонятным числа" будет не достучаться.
0
Хрисипп
18 / 28 / 8
Регистрация: 09.02.2016
Сообщений: 216
24.07.2016, 22:13 #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);
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
25.07.2016, 10:26 #7
Хрисипп, человек спрашивал, как, грубо говоря, в рантайме вычислить имя переменной и обратиться к ней по этому имени. Ваш код работает не в рантайме, а ещё до компиляции, на стадии препроцессирования.
0
Хрисипп
18 / 28 / 8
Регистрация: 09.02.2016
Сообщений: 216
25.07.2016, 13:20 #8
Цитата Сообщение от silent_1991 Посмотреть сообщение
человек спрашивал, как, грубо говоря, в рантайме вычислить имя переменной
мне этот вопрос показался слишком нелогичным
0
zer0mail
2334 / 1960 / 192
Регистрация: 03.07.2012
Сообщений: 7,029
Записей в блоге: 1
26.07.2016, 14:12 #9
Можно имена переменных и их значения писать в map.
0
Croessmah
Эксперт CЭксперт С++
13208 / 7479 / 840
Регистрация: 27.09.2012
Сообщений: 18,388
Записей в блоге: 3
Завершенные тесты: 1
26.07.2016, 15:29 #10
Цитата Сообщение от zer0mail Посмотреть сообщение
Можно имена переменных и их значения писать в map.
пост #4?
1
zer0mail
2334 / 1960 / 192
Регистрация: 03.07.2012
Сообщений: 7,029
Записей в блоге: 1
26.07.2016, 22:46 #11
Croessmah, точно.
Не люблю вглядываться в чистый код и делать реконструкцию (кроме совсем уж тривиальных случаев).
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2016, 22:46
Привет! Вот еще темы с ответами:

Как присвоить переменной имя, взятое из вектора - C++
Всем привет! Столкнулся со следующей проблемой. Имеется 2 вектора (по сути в них данные из 2 полей таблицы mysql - содержимое...

Можно ли представить значение переменной как имя файла? - C++
К примеру переменной х присваиваем случайное значение от 1 до 10, и в зависимости от того, чему равен х, результат записываем в файл с...

Создать две переменных, ввести их с клавиатуры. Вывести строки: имя переменной - адрес переменной - значение п - C++
Создать две переменных, ввести их с клавиатуры. Вывести строки: имя переменной - адрес переменной - значение переменной.

Как открыть файл, если имя файла является переменной - C++
Помогите нашел решение проблемы только для Си , как реализовать на С++ ? На Си void Decoder::menu() { unsigned int go; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.07.2016, 22:46
Ответ Создать тему
Опции темы

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