c++ - TinyXmlパーサーはファイルを正しくロードすることを拒否します

c++ tinyxml

次のxmlファイルがあります。

<?xml version="1.0" ?>
<Hello>World</Hello>


他のすべてのファイルと同じディレクトリにあります。

そして、私はそれを解析するためにこのソースファイルメソッドを使用します:

void Character::assign_xml(const char * filename) //Assign xml takes the name of the xml file as a string, and uses it to parse the file's nodes.
{
    TiXmlDocument * doc = new TiXmlDocument(filename);

    bool loadOkay = doc->LoadFile(filename);



    if (loadOkay)
    {
        printf("\n%s\n", filename);
    }
    else
    {
        printf("%s does not work.", filename);
    }

    delete doc;

}


それでも、文字列を渡すと、loadOkay変数がfalseになります。どうしてこれなの?

私の出力は以下を生成します:

Starting /home/holland/code/qt/chronos-build-desktop/chronos...
id01.xml does not work.Failed to open file/home/holland/code/qt/chronos-build-desktop/chronos exited with code 0


straceが提供する場所:

futex(0x84579c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("id01.xml", O_RDONLY)              = -1 ENOENT (No such file or directory)
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb773e000
write(1, "id01.xml does not work.Failed to"..., 42id01.xml does not work.Failed to open file) = 42
答え
ファイル名をドキュメントコンストラクタとLoadFile()の両方に渡してはいけません。 TinyXMLのサイトの例に従って、後者から省略してみてください。

それでも機能しない場合は、doc->ErrorDesc()(およびおそらくErrorRowとErrorCol)を出力します。

そして、ドキュメントを読んでください:http://www.grinninglizard.com/tinyxmldocs/classTiXmlDocument.html
関連記事

c++ - shared_ptrでラムダをブーストする

c++ - C++ / CLIを使用したネイティブC++テンプレートクラスのラップ

c++ - C++でページのコンテンツを取得する

c++ - アプリケーションにフォーカスがない場合のキープレスの検出

c++ - BOOST ASIO:Windowsで「bind:Address already in use」を取得しないのはなぜですか(ただし、Linuxで取得します)?

c++ - ビル印刷ジョブ

c++ - 文字列ストリームからファイルにデータを書き込む方法(CPP)

c++ - utf 8の2つの文字列の比較が正しくないのはなぜですか?

c++ - 十分に文書化されたオープンソースおよび高速C / C++画像操作ライブラリ。 「サイズ変更」のように、回転、色の変更、切り抜き[終了]

c++ - 重複するQGraphicsItem-sホバーイベント