c++ - yaml cpp 错误:'YAML::TypedBadConversion> >'
问题描述
我想从 yaml 文件中读取向量,但是当我尝试这样做时,出现以下错误
在抛出 'YAML::TypedBadConversion<std::vector<double, std::allocator >>' 的实例后调用终止 what(): bad conversion Aborted (core dumped)
我的主要程序是
bool fileLoaded = false;
YAML::Node config;
std::vector<double> target_jpos;
try
{
config = YAML::LoadFile("/config/test.yaml");
fileLoaded = true;
}
catch(std::exception& e)
{
fileLoaded = false;
}
target_jpos = config["target_jpos"].as<std::vector<double> >();
if(fileLoaded)
std::cout << "File loaded successfully \n\t target_jpos[0]: " << target_jpos[0] << "\n";
else
std::cout << "File failed to load\n";
我的 test.yaml 文件是
target_jpos: [-0.6, -1.0, 2.7, 0.6, -1.0, 2.7, -0.6, -1.0, 2.7, 0.6, -1.0, 2.7]
一切看起来都很好,但不知道为什么我会收到这个错误。有人对解决这个问题有任何想法吗?
编辑:我的 CMakeLists.txt 是
cmake_minimum_required(VERSION 3.5)
add_subdirectory(yaml-cpp)
set(CMAKE_CXX_FLAGS "-std=c++11")
add_executable(yaml-parser main.cpp)
target_link_libraries(yaml-parser yaml-cpp)
我的树结构是
├── CMakeLists.txt
├── config
│ └── test.yaml
├── main.cpp
└── yaml-cpp
编辑:这是完整程序的链接。
解决方案
YAML::Node
问题是您在检查文件是否已成功加载之前尝试从中提取数据。负载引发异常,因此达到您的检查。在使用数据之前,请务必检查是否成功。
另一方面,您可以通过将 YAML 文件更改为:
---
target_jpos: [-0.6, -1.0, 2.7, 0.6, -1.0, 2.7, -0.6, -1.0, 2.7, 0.6, -1.0, 2.7]
推荐阅读
- excel - 将关闭的 Excel 文件中的数据读取到 Outlook 中
- regex - 在多个字符串匹配之一之后获取整数
- python - Bokeh:: Grid/TABS 图嵌入烧瓶
- php - PHP表单不显示数据库中的数据
- flutter - Flutter - 如何更改 TextField 提示颜色?
- vb.net - 具有列表类型属性的用户控件未更新
- mysql - 使用链接表中 MySql 中的新行更新 MS Access
- linux - 在 Linux 上安装 SAP NETWEAVER 时出现问题
- javascript - form.submit() 即使使用 method="POST" 也不发布
- linux - 使用 wget 和 Perl 从 HTML 中提取信息