Изменение входных переменных по карте - PullRequest
0 голосов
/ 28 марта 2020

У меня есть два char входа, в алфавитном порядке между a и h, и я создал карту между этими персонажами и их естественными таинствами.

  char x1, x2;
  cin >> x1 >> x2;

  map<char, int> cti;
  cti['a'] = 1;
  cti['b'] = 2;
  cti['c'] = 3;
  cti['d'] = 4;
  cti['e'] = 5;
  cti['f'] = 6;
  cti['g'] = 7;
  cti['h'] = 8;

  x1 = cti.find(x1) -> second;
  x2 = cti.find(x2) -> second;

  cout << x1 << x2;

На входе a b я ожидал, что 12 будет выходом, но ничего не выводится. Используя другие переменные, кроме самих входных данных, синтаксис, похоже, тоже не работает, поэтому я предполагаю, что find не принимает переменные в качестве аргумента, но я не совсем уверен, что я сделал неправильно.

Также возможно, что существует более эффективный метод, чем с map для достижения sh того, чего я хочу достичь sh, и в этом случае я был бы признателен, чтобы его прокомментировать, даже хотя на самом деле это не главный вопрос.

1 Ответ

0 голосов
/ 28 марта 2020

Нет, это намного проще, замените

char x1, x2;

на

int x1, x2;

В вашем коде компилятор интерпретирует ваши целочисленные значения как символы. Эти символы не видны при попытке их печати. ​​

...