Имя переменной с использованием указателя - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу выбрать с клавиатуры, какой массив я хочу отобразить (я знаю, что мой код не работает, я просто хочу показать свою проблему)

 int main(){
            char *a = new char[5];
            char *b = new char[5];
            char name;

            cin >> a;
            cin >> b;
            cin >> name;

            cout << name; 
}

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Имена переменных, которые вы используете в своем коде, не имеют смысла после запуска вашей программы. Вы не можете динамически заменить name на a или b, если это то, что вы хотели сделать.

Делая пример проще (массивы в стиле c определенно не для начинающих, посмотрите вместо этого std::vector), вы можете сделать это:

#include <iostream>
int main() {
    int a = 42;
    int b = 102;
    std::cout << "select a or b: ";
    char select;
    std::cin >> select;
    if (select == 'a') std::cout << a;
    else if (select == 'b') std::cout << b;
    else std::cout << "wrong input \n";
}
0 голосов
/ 03 апреля 2019

В большинстве случаев, если вы хотите, чтобы несколько объектов (скажем, более 2 или 3) одного типа, вам следует рассмотреть возможность использования массива или вектора.

Поэтому вместо

char *a = ...;
char *b = ...;
char *c = ...;

Использование

char *values[] = { ... };

Теперь вы можете получить доступ к значению с помощью индекса, то есть целочисленного значения.Для символа az это легко сделать, вычтя значение 'a' ('a'-'a' равно 0, 'b'-'a' равно 1 и т. Д.).

const char *values[] = { "this is a", "this is b" };

char name;
std::cin >> name;
int index = name - 'a';

// TODO: Make sure the index is in range!
const char *value = values[index];
std::cout << value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...