我正在尝试使用c ++
使用rapidxml做这样的事情xml_document<> doc;
ifstream myfile("map.osm");
doc.parse<0>(myfile);
并收到以下错误
此行的多个标记 - 参数无效'候选者是:void parse(char *)' - 无法解析符号'解析'
文件大小最多可达几兆字节。
请帮助
答案 0 :(得分:0)
您必须首先将文件加载到空终止的char缓冲区中,如官方文档中所述。
只需将文件内容读入char数组,然后使用此数组传递给xml_document::parse()
函数。
如果您使用的是ifstream
,则可以使用以下内容将整个文件内容读取到缓冲区
ifstream file ("test.xml");
if (file.is_open())
{
file.seekg(0,ios::end);
int size = file.tellg();
file.seekg(0,ios::beg);
char* buffer = new char [size];
file.read (buffer, size);
file.close();
// your file should now be in the char buffer -
// use this to parse your xml
delete[] buffer;
}
请注意我没有编译上面的代码,只是从内存中编写,但这是一个粗略的想法。查看ifstream
的文档以获取确切的详细信息。无论如何,这应该可以帮助您入门。