在管道中调用时,从 std::cin 加载 pugi::xml_document 失败
Loading pugi::xml_document from std::cin fails when invoked in pipeline
Using pugixml 1.0
当我使用 shell STDIN 重定向时,从 std::cin 加载 XML 文档有效:
$ ./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;
}
我不明白原因。
>pugixml 1.0 期望输入流是可搜索的。如果流绑定到文件,则查找有效,但如果流绑定到管道,则查找将失败。
从 pugixml 1.2 开始(已发布...昨天:)),不可搜索的流被接受为 load() 源。您的示例在使用 1.2 进行编译时有效。
相关文章:
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 树莓上的 Libtorch 无法加载 pt 文件,但在 ubuntu 上工作
- Python ctypes:不会按预期加载 dll
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 保存/加载大量短数组到二进制文件
- 使用 SDL2 和SDL_image C++加载图像
- 无法使用加载库卸载注入的 dll (C++)
- 是否有原子加载非原子值的函数?
- 而 cin.get 在从文件加载时会导致无限循环
- 在管道中调用时,从 std::cin 加载 pugi::xml_document 失败
- 用一串命令预加载cin