如何检查字符编码是否为 ASCII?

cig*_*ien 7 c++ encoding ascii

我想编写以下函数:

int char_index(char c) 
{
  if (is_ascii<char>)
    return c - 'A';
  else 
    return c == 'A' ? 0 :
           c == 'B' ? 1 :
           // ...
}
Run Code Online (Sandbox Code Playgroud)

有没有像一个函数is_asciistd?我正在想象一些类似的东西std::numeric_limits<T>::is_iec559,说明某些浮点类型是否T满足 IEE 754 标准的要求。


我想我可以is_ascii用类似if (65 == 'A' && ...)枚举整个 ASCII 字符集的东西来实现自己,并将它们与int表示进行比较,但这很烦人。另外,我不确定如何检查不可打印的字符,例如SOH(标题开头)等。

甚至可以在用户代码中编写这个函数,还是我必须依靠实现来提供这样的函数?

Rem*_*eau -3

无需专门检查 ASCII。您真正感兴趣的是在连续的字母字母表中获取索引,您可以让语言为您处理该索引:

int char_index(char c)
{
    if (c >= 'A' && c <= 'Z')
        return c - 'A';
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

  • [EBCDIC](https://en.wikipedia.org/wiki/EBCDIC) 没有连续的 AZ。 (3认同)