我正在尝试在Pebble中输出希伯来语单词,这些单词在C代码中以ISO-8859-8编码的char *给出,但我需要将它们转换为ISO-8859-8-L编码的字符串。这基本上意味着逆转字符串:
"ABC D" => "D CBA"
输入字符串是8位ASCII(无多字节或unicode)。 我知道如何在C代码中对字符串进行就地恢复,但后来我需要在init()函数中反转所有字符串,所以我想知道是否有一种方法可以定义一个C宏来实现它。
答案 0 :(得分:0)
我不知道CPP用于反转字符串的任何用途。
你当然可以使用类似函数的宏,如下所示。
#define rev_str(string, len) do { \
int i; \
for(i = 0; i < len>>1; ++i) { \
const uint8_t t = string[len - i - 1]]; \
string[len - i - 1] = string[i]; \
string[i] = t; \
} \
} while(0)
但是我不知道这对于内联函数有什么好处。
另一方面,如果你想把它推迟到编译时(并希望它只使用宏让我觉得你可能),我相信你需要超出CPP范围的东西,比如C + +模板元编程。