pugixml1.0を使用する
std :: cinからのXMLドキュメントのロードは、シェルSTDINリダイレクトを使用すると機能します。
$ ./pugitest < sample.xml # OK
しかし、パイプラインで呼び出されると、失敗します。
$ cat sample.xml | ./pugitest # FAILS
./pugitest: Error reading from file/stream
これは、pugitestプログラムのコードです。
#include "pugixml.hpp"
#include <iostream>
#include <stdexcept>
int main(int argc, char *const argv[])
{
try {
pugi::xml_document doc;
pugi::xml_parse_result result = doc.load(std::cin);
if (!result) {
throw std::runtime_error(result.description());
}
} catch (std::exception& e) {
std::cerr << argv[0] << ": " << e.what() << '\n';
return 1;
}
return 0;
}
理由がわかりません。