我有一个以零结尾的字符串:
char* s = ...;
我正在生成 C 源代码(在运行时),并且我想输出一个表示 s 的字符串文字,它将在生成的 C 程序中生成与 s 相同的字符串。
我使用的算法是:
Output "
Foreach char c in s
if c == " output \"
else if c == \ output \\
else output c
Output "
除了角色之外,还有其他角色需要特殊对待吗?"
and \
?
- You must encode
"
, \
, \r
and \n
and \0
(and \?
……迈克尔·伯尔mentions https://stackoverflow.com/a/12209218/61974)。如果不这样做将会破坏您的代码。
- You should使用十六进制转义码对非 ASCII 字符进行编码,例如
\x80
。如果源代码中有非 ASCII 字符,则由实现定义。对这些字符进行编码失败可以在某些编译器上正常工作,但在其他编译器上可能会崩溃。
- You can对 ASCII 不可打印字符进行编码。如果您对类似字符使用转义码,它将提高生成的源代码的可读性
\t
, \b
, \x05
等等。如果您不这样做,您的代码仍然可以工作,但可能难以阅读。
- You don't需要逃跑
'
在双引号字符串内。这是合法的,但没有必要,并且不会使源代码更具可读性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)