gpt4 book ai didi

C:编写宏来构建字符串转义序列

转载 作者:太空宇宙 更新时间:2023-11-04 03:44:18 26 4
gpt4 key购买 nike

我正在使用一些用 Shift-JIS 打印文本的日语 C 代码。在原始代码中,文本以字符串文字的形式直接用假名书写。在我需要 UTF-8 的编辑器中,它显示为无意义。

特别是这段代码喜欢使用“大”版本的英文字母:http://www.rikai.com/library/kanjitables/kanji_codes.sjis.shtml例如\x82\x60 = A(一个大的“A”,ASCII 中的\x41)。我想我会写一个 CPP 宏来转换那些来自 ASCII 的代码,比如:

#define LARGE_LETTER(x) "\x82\x" (x+31)

但很明显,这个宏并不能很好地工作,而且我不确定如何让它工作,如果可能的话。你能像这样构建字符串转义序列吗?

最佳答案

开始吧,为什么不定义很多呢

#define LARGE_LETTER_A "\x82\x60"
#define LARGE_LETTER_B "\x82\x61"

#define LARGE_LETTER_Z "\x82\x7A"

用法

char *str = "foo " LARGE_LETTER_A " baz";

接下来,您可以使用 primitive cat 更上一层楼

#define PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
#define LARGE_LETTER(x) PRIMITIVE_CAT(LARGE_LETTER_, x)

用法:

char *str = "foo " LARGE_LETTER(A) " baz";

关于C:编写宏来构建字符串转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26070063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com