我将大数据存储为XML文件,我需要使用Ubuntu 14.04中的gnome-terminal将它们转换为C ++。
最好的方法是什么?有人建议写一个shell脚本来处理大数据。
答案 0 :(得分:1)
从C ++程序读取XML数据文件的最佳方法是使用XML库。在互联网上搜索" C ++ XML库"。
答案 1 :(得分:1)
选项1 - 将数据保留在XML文件中并在运行时将其读出。 (推荐)
您可能想要做的是将XML文件保留在磁盘上,然后编写程序以在运行时读取这些文件。也许这些XML文件的文件名可以作为命令行传递给您的程序。
然后你的程序"读取"这些XML文件并将它们解析为树结构。有许多现有的XML库可以为您进行所有繁重的解析。一个这样的库是libxml。然后你的天体物理学代码就会分析你的数据。
选项2 - "使用xxd -i"将XML转换为C资源文件。
如果您绝对想要将XML转换为C ++代码,那么我能为您提供的最好的是带有xxd
选项的-i
命令。这将把文件转换为C代码中的无符号字符数组。例如:
ubuntu@ip-10-0-0-15:~$ cat foo.xml
<foo>
<data>This is some data</data>
</foo>
ubuntu@ip-10-0-0-15:~$ xxd -i foo.xml
unsigned char foo_xml[] = {0x3c, 0x66, 0x6f, 0x6f, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, 0x74, 0x61, 0x3e, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x3c, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x3e, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6f, 0x3e, 0x0a};
unsigned int foo_xml_len = 47;
unsigned char数组foo_xml
是原始文件的ascii字节数组。
在运行时,您可以将unsigned char数组转换回字符串(不要忘记附加null char)。然后使用我上面提到的XML库来解析数据。