Есть ли способ получить символ путем автоматического вывода типа с использованием десятичного кода ASCII? - PullRequest
0 голосов
/ 22 октября 2018

Например, «a» имеет код ASCII 97, и мы можем использовать

char ch = 'a';

или

char ch = 97;

С auto мы можем написать

auto ch = 'a';

для первого случая, но как получить переменную char с помощью числового кода ASCII во время удержания?

Это не работает для меня:

auto ch = '\97';

Ответы [ 4 ]

0 голосов
/ 22 октября 2018

Вы должны использовать восьмеричное или шестнадцатеричное значение для escape-последовательности

auto ch  = '\141';
auto ch2 = '\x61';

Для получения дополнительной информации https://en.cppreference.com/w/cpp/language/escape

Если вы хотите использовать десятичные значения, у вас есть две опции:

  1. Приведение к символу

    auto ch = static_cast<char>(97);
    
  2. Пользовательские литералы

    char operator "" _ch(unsigned long num)
    {
         return static_cast<char>(num);
    }
    //...
    auto ch = 97_ch;
    
0 голосов
/ 22 октября 2018

Не существует интегрального литерала, определяющего char.Вы должны явно назвать тип, например

auto ch = char{97};
0 голосов
/ 22 октября 2018

Десятичного экранирования нет, но вы можете использовать шестнадцатеричное: '\x61', или восьмеричное, '\141'.
Если вам действительно нужен десятичный, вам нужно выполнить приведение;char{97}.

0 голосов
/ 22 октября 2018

Приведите целочисленный литерал к char:

auto ch = static_cast<char>(97);
...