【发布时间】:2012-08-04 16:27:16
【问题描述】:
我正在尝试使用 rapidxml 使用 c++ 来做这样的事情
xml_document<> doc;
ifstream myfile("map.osm");
doc.parse<0>(myfile);
并收到以下错误
此行有多个标记 - 无效参数 ' 候选者是:void parse(char *) ' - 无法解析符号 'parse'
文件大小可达几兆字节。
请帮忙
【问题讨论】:
我正在尝试使用 rapidxml 使用 c++ 来做这样的事情
xml_document<> doc;
ifstream myfile("map.osm");
doc.parse<0>(myfile);
并收到以下错误
此行有多个标记 - 无效参数 ' 候选者是:void parse(char *) ' - 无法解析符号 'parse'
文件大小可达几兆字节。
请帮忙
【问题讨论】:
您必须首先按照官方文档中的说明将文件加载到以空字符结尾的字符缓冲区中。
只需将文件内容读入一个 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 的文档以了解详细信息。无论如何,这应该可以帮助您入门。
【讨论】: