1

C ++を使用してrapidxmlを使用して、このようなことをしようとしています

xml_document<> doc; 
ifstream myfile("map.osm"); 
doc.parse<0>(myfile); 

次のエラーを受け取ります

この行に複数のマーカーがあります - 引数が無効です ' 候補は次のとおりです: void parse(char *) ' - シンボル 'parse' を解決できませんでした

ファイルサイズは数メガバイトまで可能です。

助けてください

4

1 に答える 1

0

公式ドキュメントでここで指定されているように、最初にファイルを null で終了する char バッファーにロードする必要があります。

http://rapidxml.sourceforge.net/manual.html#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c

ファイルの内容を 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正確な詳細については、ドキュメントを参照してください。とにかく、これはあなたが始めるのに役立つはずです。

于 2012-08-04T16:46:12.177 に答える