【问题标题】:Can ASCII code for a char be printed in C++ like in C?可以像在 C 中一样在 C++ 中打印字符的 ASCII 代码吗?
【发布时间】:2013-05-19 18:43:36
【问题描述】:

因为我们可以打印 ASCII 码并在 C 中递增 --> 例如:

{
char ch='A';
ch++;
printf("%d",ch); 
}

这将在控制台上输出“66”。

如何在 C++ 中做到这一点??

【问题讨论】:

    标签: c++ c ascii printf


    【解决方案1】:

    是的,只需在输出之前将其转换为 int,这样它就不会被解释为字符:

    char ch = 'A';
    ch++;
    std::cout << static_cast<int>(ch);
    

    但是请注意,这并不能保证输出与字符 'B' 对应的值。如果您的执行字符集是 ASCII 或其他一些健全的字符集,那么它将是,但标准不能保证您的执行字符集(除了数字字符,09,具有连续值)。

    【讨论】:

      【解决方案2】:

      printf 将像在 C++ 中一样工作。但是如果你想使用cout,你只需要转换:

      char ch = 'A';
      ch++;
      std::cout << static_cast<int>(ch);
      

      【讨论】:

        【解决方案3】:

        无需演员表:

        {
        char ch='A';
        ch++;
        std::cout << ch << ": " << +ch << '\n';
        }
        

        【讨论】:

        • 使用一元 + 会导致隐式转换为 int,对吧?这比显式演员表更好吗?
        • @CarlNorum - 对。 “更好”是一个品味问题。我怀疑大多数人会更喜欢明确的演员表。
        【解决方案4】:

        在 C++ 中可以完全相同的方式完成:

        {
        char ch='A';
        ch++;
        printf("%d",ch); 
        }
        

        【讨论】:

          【解决方案5】:

          接受 C 和 C++ 都不坚持 编码 是 ASCII 的事实(尽管它在台式计算机上无处不在),您提供的代码是有效的 C++。

          在许多(尽管不是全部)方面,C++ 是 C 的超集。

          【讨论】:

          • 仅供参考:第一批 C++ 编译器是将 C++ 源代码转换为 C 然后编译的翻译器 - 编译器消息是一种乐趣。所以当时 C 做了 C++ 所做的一切,甚至更多,虽然没有那么优雅。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-04
          • 1970-01-01
          • 2012-10-14
          • 1970-01-01
          相关资源
          最近更新 更多