有没有办法通过使用十进制ASCII代码的自动类型推导来获取char?

Den*_*kov 29 c++ c++14 c++17

例如,'a'具有ASCII码97,我们可以使用

char ch = 'a';
Run Code Online (Sandbox Code Playgroud)

要么

char ch = 97;
Run Code Online (Sandbox Code Playgroud)

auto我们可以写

auto ch = 'a';
Run Code Online (Sandbox Code Playgroud)

对于第一种情况,但如何在演绎期间通过数字ascii代码获取char变量?

这对我不起作用:

auto ch = '\97';
Run Code Online (Sandbox Code Playgroud)

小智 37

您必须使用八进制或十六进制值作为转义序列

auto ch  = '\141';
auto ch2 = '\x61';
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请访问https://en.cppreference.com/w/cpp/language/escape

如果要使用小数值,则有两个选项:

  1. 转为char

    auto ch = static_cast<char>(97);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 用户定义的文字

    char operator "" _ch(unsigned long num)
    {
         return static_cast<char>(num);
    }
    //...
    auto ch = 97_ch;
    
    Run Code Online (Sandbox Code Playgroud)

  • 确实.OP问题的原因是`'\ _97'`是无效的八进制. (4认同)

mol*_*ilo 20

没有十进制转义,但您可以使用十六进制:'\x61'或八进制'\141'.
如果你真的需要小数,你需要施放; char{97}.


lub*_*bgr 8

没有指定a的整数文字char.您必须明确命名类型,例如

auto ch = char{97};
Run Code Online (Sandbox Code Playgroud)