C++ 在字符数组中包含字符的十进制等价物

C++ 在字符数组中包含字符的十进制等价物,c++,string,character-encoding,escaping,ascii,C++,String,Character Encoding,Escaping,Ascii,如何使用字符的十进制/十六进制表示而不是实际字符来创建字符数组 我问这个问题的原因是因为我正在编写C代码,我需要创建一个字符串,其中包含英语中未使用的字符。然后,该字符串将被解析并显示在LCD屏幕上 例如“\0”解码为0,“\n”解码为10。有没有更多的这些特殊字符,我可以牺牲显示自定义字符。我可以发送“温度为10摄氏度”,并打印学位标志,而不是“\d”。像这样的东西会很棒。简单,使用std::ostringstream和角色转换: std::string s = "hello world";

如何使用字符的十进制/十六进制表示而不是实际字符来创建字符数组

我问这个问题的原因是因为我正在编写C代码,我需要创建一个字符串,其中包含英语中未使用的字符。然后,该字符串将被解析并显示在LCD屏幕上


例如“\0”解码为0,“\n”解码为10。有没有更多的这些特殊字符,我可以牺牲显示自定义字符。我可以发送“温度为10摄氏度”,并打印学位标志,而不是“\d”。像这样的东西会很棒。

简单,使用
std::ostringstream
和角色转换:

std::string s = "hello world";

std::ostringstream os;
for (auto const& c : s)
    os << static_cast<unsigned>(c) << ' ';

std::cout << "\"" << s << "\" in ASCII is \"" << os.str() << "\"\n";
std::string s=“hello world”;
std::ostringstream os;
用于(自动施工和成本:s)
os您可以直接编写

char myValues[] = {1,10,33,...};

使用
\u00b0
制作学位标志(我只是查找unicode代码)


这需要终端中的unicode支持。

假设您的显示器上有一个字符代码,它是一个度符号(对于自定义显示器,我不一定期望它在扩展IBM ASCII字符集中的公共位置“存在”,或者显示器支持unicode字符编码)然后,您可以使用编码
\nnn
\xhh
,其中nnn最多为八进制(以8为基数)的三位数字,或hh最多为十六进制代码的两位数字。不幸的是,没有十进制编码可用-丹尼斯·里奇和/或布赖恩·克尼汉可能更习惯于使用八进制,因为在C语言最初开发时,八进制是很常见的

例如

char*str=“ABC\101\102\103”;

再多研究一下,我就找到了我自己问题的答案

由“\”跟随的字符称为转义序列

通过使用从“\000”到“\777”的转义序列,可以将ascii的八进制等价物放入字符串中

十六进制'x00'到'xFF'也是如此

我正在使用“xC1”到“xC8”打印我的自定义字符,因为我只有8个自定义字符


每件事都是在一行代码中完成的:lcd\u putc(“Degree\xC1”)

你是说
\ddd
还是
\xhh
转义序列(3个十进制或2个十六进制数字)?度符号是unicode,你需要确保你的终端支持unicode…你可以尝试转换
(char)10
->
\n
@H2CO3:\ddd实际上(最多)是3个八进制数字,而不是十进制数字。因此,
“\33”
是一个“转义”字符(27位小数)。请尝试以下文字:
“温度为10\xB0摄氏度”
。Hex
B0
在Windows扩展ASCII中对学位符号进行编码,因此您在那里可能会很幸运。谢谢。。。这正是我想要的。我发布了我的问题,然后去谷歌寻找答案。我不知道有很多人在几分钟内就回答了。谢谢,我不认为这实际上需要Unicode(宽字符)支持;如果使用的窄字符集支持度字符,就足够了。然后,编译器可以将
'\u00b0'
转换为适当的
char
值,该值可能是
0xb0
char myValues[] = {1,10,33,...};
 char *str = "ABC\101\102\103";
 cout << str << endl;