2012-12-17 42 views
0

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

我需要这种编码为我的C/C++代码在类似XML的中间语言。

在此先感谢。

回答

4

如果你将所有<字符$,如何你会保留原始文件中$的任何实例吗?

既然你说你的目标是一个类似于XML的中间语言,为什么不使用XML转义,而是将<改为&lt而不是? (在这种情况下,您还需要将&转换为&amp。)有许多开源库可用于帮助您执行此操作。如果找不到任何独立模块,here's code I've written可能会提取其XML(un)转义功能。

+0

谢谢。你做了我想要的!不幸的是,我在Python和你的C++中。根据你的代码,C/C++和XML之间唯一冲突的字符是'>','','&',''和'“吗? – ahmad

+0

@ahmad C/C++和XML就是这样,在XML中只有一系列字符表示字符,这些字符的列表是正确的。我确信在Python中会有标准函数来(转义)XML,但是您可以轻松地使用这个字符列表编写你自己的代码。 – simonc

+0

@ahmad请参阅http://wiki.python。org/moin/EscapingXml有关python支持XML的一些注意事项 – simonc

5

不是列表毫无保留的字符(有无限的),这里是从标准的2.3.1保留的:

 
space, horizontal tab, vertical tab, form feed, new line 
a through z 
A through Z 
0 through 9 
_ { } [ ] # () % : ; . ? * + -/^ & | ~ ! = , \ " ' 

+0

不够公平,但是这对真正帮助OP是否有帮助,尤其是考虑到任何不平凡的程序都会包含字符串文字? – NPE

+0

@NPE可能没有他想要的那么有用,因为这是一个XY问题。 simonc的答案似乎更有帮助。 – Pubby

+0

@simonc解决了我的主要问题。但是,这是我的问题的答案。 – ahmad

1

这取决于你的意思是“保留”。一个实现 只需要了解输入中有限数量的 字符,其他所有字符都通过 通用字符名称输入。允许实现(并且我甚至鼓励支持 )以支持更多,参见§2.2,第1点。 实际上,在注释中以及在字符串和字符文字中有(或应该)保留字符 (至少是 宽字符格式,而在C++ 11中是Unicode格式)。你的 最好的赌注可能是引用可打印的东西。