Tôi muốn nhận mọi nút trong bản đồ mà không cần biết các phím.yaml-cpp Cách dễ nhất để lặp qua bản đồ với các giá trị không xác định
My YAML trông như thế này:
characterType :
type1 :
attribute1 : something
attribute2 : something
type2 :
attribute1 : something
attribute2 : something
Tôi không biết có bao nhiêu "loại" s sẽ được công bố hoặc những gì tên của những phím sẽ. Đó là lý do tại sao tôi đang cố gắng lặp lại thông qua bản đồ.
struct CharacterType{
std::string attribute1;
std::string attribute2;
};
namespace YAML{
template<>
struct convert<CharacterType>{
static bool decode(const Node& node, CharacterType& cType){
cType.attribute1 = node["attribute1"].as<std::string>();
cType.attribute2 = node["attribute2"].as<std::string>();
return true;
}
};
}
---------------------
std::vector<CharacterType> cTypeList;
for(YAML::const_iterator it=node["characterType"].begin(); it != node["characterType"].end(); ++it){
cTypeList.push_back(it->as<CharacterType>());
}
Đoạn mã trên không đưa ra bất cứ rắc rối khi biên dịch nhưng sau đó tại thời gian thực hiện tôi nhận được lỗi này: chấm dứt gọi là sau khi ném một thể hiện của YAML::TypedBadConversion<CharacterType>
Tôi cũng đã cố gắng sử dụng một subindex thay của trình lặp, nhận được cùng một lỗi.
Tôi chắc chắn tôi đang làm điều gì đó sai, tôi chỉ không thể nhìn thấy nó.
Bạn là người tiết kiệm cuộc sống! Cảm ơn Jesse :) – delephin
Một chút offtopic, nhưng tôi tìm thấy nó tốt đẹp để có một cách để có được toàn bộ bản đồ (YAML cấu trúc) ra như một chuỗi, tôi dường như không thể tìm thấy bất kỳ tài liệu API, nơi khả năng như vậy được đề cập. – Smar
Cũng giống như nếu giá trị trống, lỗi này sẽ được nâng lên, thay vì trả về chuỗi trống ... – Smar