在二进制格式的xml文件中查找关键字
finding keyword in an xml file with binary format
我有一个二进制格式的xml文件。我想用c++代码提取这个文件中某行中包含的一些关键字。假设我想找到以下关键字<GK-VECTORS>
,并且我知道该关键字存在于文件中。这是我的c++代码:
#include <fstream>
#include <iostream>
using namespace std;
int main(){
int size(8);
ifstream gfile("gkvectors.dat", ios::binary | ios::in);
string keyword = "<GK-VECTORS>";
string line;
while( gfile.good() ){
getline(gfile,line);
bool found = line.find(keyword);
if( found != string::npos ){
cout << line << 'n';
break;
}
}
return 0;
}
我从执行这些文件中得到的输出是不可读的:
�
以下是(未格式化的)xml文件内部的样子:
^D^@^@^@^E^Z^@^@^D^@^@^@^^^@^@^@200^Z^@^@
<?iotk version="1.2.0"?>
^^^@^@^@^D^@^@^@^E^]^@^@^D^@^@^@!^@^@^@200^]^@^@
<?iotk file_version="1.0"?>
!^@^@^@^D^@^@^@^E^U^@^@^D^@^@^@^Y^@^@^@200^U^@^@
<?iotk binary="T"?>
^Y^@^@^@^D^@^@^@^E^X^@^@^D^@^@^@^^@^@^@200^X^@^@
<?iotk qe_syntax="F"?>
^^@^@^@^D^@^@^@^A^N^@^@^D^@^@^@^R^@^@^@200^N^@^@
<GK-VECTORS>
^R^@^@^@^D^@^@^@^A;^@^@^D^@^@^@?^@^@^@200;^@^@
<NUMBER_OF_GK-VECTORS type="integer" size="1" kind="4">
?^@^@^@^H^@^@^@^@^@^@^@255^C^@^@^H^@^@^@^D^@^@^@^B^[^@^@^D^@^@^@^_^@^@^@200^[^@^@
</NUMBER_OF_GK-VECTORS>
^_^@^@^@^D^@^@^@^A?^@^@^D^@^@^@C^@^@^@200?^@^@
<MAX_NUMBER_OF_GK-VECTORS type="integer" size="1" kind="4">
C^@^@^@^H^@^@^@^@^@^@^@326^C^@^@^H^@^@^@^D^@^@^@^B^_^@^@^D^@^@^@#^@^@^@200^_^@^@
</MAX_NUMBER_OF_GK-VECTORS>
#^@^@^@^D^@^@^@^A1^@^@^D^@^@^@5^@^@^@2001^@^@
<GAMMA_ONLY type="logical" size="1" kind="4">
5^@^@^@^H^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^D^@^@^@^B^Q^@^@^D^@^@^@^U^@^@^@200^Q^@^@
</GAMMA_ONLY>
^U^@^@^@^D^@^@^@^AC^@^@^D^@^@^@G^@^@^@200C^@^@
<K-POINT_COORDS type="real" size="3" kind="8" UNITS="2 pi / a">
G^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^D^@^@^@^B^U^@^@^D^@^@^@^Y^@^@^@200^U^@^@
</K-POINT_COORDS>
^Y^@^@^@^D^@^@^@^A.^@^@^D^@^@^@2^@^@^@200.^@^@
<INDEX type="integer" size="941" kind="4">
有人能帮我解决这个问题吗?这样我就可以得到可读的输出了?
请查看XML规范,尤其是第2.6节"处理说明"。
PI不是文档字符数据的一部分,但必须传递给应用程序。
您必须将数据逐字逐句地传递给应用程序
如果您想查看数据,您应该以十六进制格式打印它,就像十六进制转储实用程序所做的那样。
此外,为了解释数据,您必须了解数据的布局。
由于它是应用程序数据,因此不能保证数据是可打印的。
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 正在查找文档以获得PS4平台的C++中的设备信息
- C++中的"inline"关键字
- 在C++中查找文件
- 如何确保C++函数在定义之前声明(如override关键字)
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 使用正则表达式regex_search在字符串中查找字符串
- 使用gcc从静态链接的文件中查找可选符号
- 在C++中查找范围的长度
- 算法问题:查找从堆栈中弹出的所有序列
- 对于关键字查找,std::vector比std::map快
- 在二进制格式的xml文件中查找关键字
- 在std::映射中查找最接近或精确的关键字
- C++映射与用于多关键字查找的多映射
- 使用friend关键字查找模板函数
- 遍历多映射以查找从给定值到给定关键字的路径