如何在C++中 #define 角色

How to #define a character in C++

本文关键字:#define 角色 C++      更新时间:2023-10-16

我需要在C++中定义一个字符。现在我有:

#define ENQ (char)5

有没有办法定义一个字符,类似于如何使用l后缀定义长整型(例如 5l)?

强制转换很好,它对运行时没有影响,但您可以使用 x 转义序列直接定义任何值的字符常量,以通过十六进制字符代码指定字符 - 对于非打印或扩展字符很有用。

#define ASCII_ENQ `x5`

但在C++中,您最好使用const(具有显式类型):

static const char ASCII_ENQ = 5 ;

static const char ASCII_ENQ = 'x5' ;

如果您努力实现完整的类型协议(不是真的必要)。

这将

是一个字符文字'a'例如:

#define ALPHA 'a'
#define FIVE_CHAR '5'

您还可以使用用户定义的文字并编写如下内容:

#include <iostream>
const char operator ""_ch( unsigned long long i) {
    return i;
}
int main() {
    char enq = 5_ch;
    char alpha = 65_ch;
    cout << alpha << 'n';
    return 0;
}

但是对于您可以更轻松地表达的东西来说,这有点矫枉过正:

const char ENQ = 5;

除非你真的想做一些棘手的事情,比如:

#include <iostream>
// convert a number (a figure) to its ASCII code
const char operator ""_ch( unsigned long long i) {
    return i < 10 ? i + 48 : 48;
}
int main() {
    char num_as_char = 5_ch;
    std::cout << num_as_char << 'n';
    // which outputs 5
    return 0;
}