我需要在C / C ++代码文件中对所有出现的<
字符进行编码。为了防止冲突,我需要知道C / C ++标准中没有保留哪些字符。例如,如果未保留$
,我可以暂时将<
编码为$
并稍后恢复原始的C / C ++代码。
我需要使用类似XML的中间语言对我的C / C ++代码进行编码。
提前致谢。
答案 0 :(得分:5)
而不是列出未保留的字符(有无限的),这里是标准2.3.1中的保留字符:
space, horizontal tab, vertical tab, form feed, new line a through z A through Z 0 through 9 _ { } [ ] # ( ) % : ; . ? * + - / ^ & | ~ ! = , \ " '
答案 1 :(得分:4)
如果您将所有<
个字符转换为$
,您将如何在原始文件中保留$
的任何实例?
既然您说您的目标是类似XML的中间语言,为什么不使用XML转义并将<
转换为<
呢? (在这种情况下,你还需要转换&
,比如&
。)有很多开源库可以帮助你做到这一点。如果找不到任何独立模块,here's code I've written可能会提取其XML(un)转义功能。
答案 2 :(得分:1)
这取决于你所说的“保留”。一个实现 只需了解非常有限的数量 输入中的字符,其他所有字符都是通过输入来输入的 通用字符名称。允许实现(和 我甚至会说鼓励)支持更多,见§2.2,第1点。 在实践中,有(或应该)没有保留字符 在评论中,以及字符串和字符文字(至少是 宽字符形式,在C ++ 11中,Unicode形式)。您的 最好的选择可能是引用可打印的东西。