C / C ++中未保留的字符

时间:2012-12-17 09:04:48

标签: c++ c parsing

我需要在C / C ++代码文件中对所有出现的<字符进行编码。为了防止冲突,我需要知道C / C ++标准中没有保留哪些字符。例如,如果未保留$,我可以暂时将<编码为$并稍后恢复原始的C / C ++代码。

我需要使用类似XML的中间语言对我的C / C ++代码进行编码。

提前致谢。

3 个答案:

答案 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转义并将<转换为&lt呢? (在这种情况下,你还需要转换&,比如&amp。)有很多开源库可以帮助你做到这一点。如果找不到任何独立模块,here's code I've written可能会提取其XML(un)转义功能。

答案 2 :(得分:1)

这取决于你所说的“保留”。一个实现 只需了解非常有限的数量 输入中的字符,其他所有字符都是通过输入来输入的 通用字符名称。允许实现(和 我甚至会说鼓励)支持更多,见§2.2,第1点。 在实践中,有(或应该)没有保留字符 在评论中,以及字符串和字符文字(至少是 宽字符形式,在C ++ 11中,Unicode形式)。您的 最好的选择可能是引用可打印的东西。