web-dev-qa-db-fra.com

Existe-t-il un moyen d'obtenir des caractères par déduction de type automatique en utilisant le code décimal ASCII?

Par exemple, 'a' a ASCII code 97 et nous pourrions utiliser

char ch = 'a';

ou

char ch = 97;

Avec auto on pourrait écrire

auto ch = 'a';

pour le premier cas, mais comment obtenir la variable char par le code ascii numérique lors de la déduction?

Cela ne fonctionne pas pour moi:

auto ch = '\97';
29
Denis Sablukov

Vous devez utiliser une valeur octale ou hexadécimale pour la séquence d'échappement

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

Pour plus d'informations https://en.cppreference.com/w/cpp/language/escape

Si vous souhaitez utiliser des valeurs décimales, vous avez deux options:

  1. Cast to char

    auto ch = static_cast<char>(97);
    
  2. Littéraux définis par l'utilisateur

    char operator "" _ch(unsigned long num)
    {
         return static_cast<char>(num);
    }
    //...
    auto ch = 97_ch;
    
37
Alexander Petrenko

Il n'y a pas d'échappement décimal, mais vous pouvez utiliser hexadécimal: '\x61', ou octal, '\141'.
Si vous avez vraiment besoin de décimales, vous devez lancer; char{97}.

20
molbdnilo

Il n'y a pas de littéral intégral qui spécifie un char. Vous devez nommer explicitement le type, par ex.

auto ch = char{97};
8
lubgr

Cast un littéral intégral en char:

auto ch = static_cast<char>(97);
4
Ron