Я пытался вывести файл yaml с помощью YAML :: Emitter. Например, мне нужно, чтобы что-то подобное было моим файлом yaml.
annotations:
- run:
type: range based
attributes:
start_frame:
frame_number: 25
end_frame:
frame_number: 39
Пока что использую мой код
for (auto element : obj)
{
basenode = YAML::LoadFile(filePath); //loading a file throws exception when it is not a valid yaml file
//Check if metadata is already there
if (!basenode["file_reference"])
{
writeMetaData(element.getGttStream(), element.getTotalFrames(), element.getFileHash());
}
annotationNode["annotations"].push_back(element.getGestureName());
annotationNode["type"] = "range based";
output << annotationNode;
attributesNode["attributes"]["start_frame"]["frame_number"] = element.getStartFrame();
attributesNode["attributes"]["end_frame"]["frame_number"] = element.getEndFrame();
output << typeNode;
output << attributesNode;
ofs.open(filePath, std::ios_base::app);
ofs << std::endl << output.c_str();
}
Я получаю такой результат
annotations:
- run
type: range based
---
attributes:
start_frame:
frame_number: 26
end_frame:
frame_number: 57
Я хочу, чтобы «тип» и «атрибуты» под недавно добавленным элементом последовательности в «аннотации» были одинаковыми для всех следующих узлов.
Я даже пробовал использовать что-то вроде этого
annotationNode [0] [тип] = "на основе диапазона"
и результат был таким
0: тип: "на основе диапазона"
Как мне получить недавно добавленный элемент в «аннотации» последовательности?
annotationNode
?) - person Jesse Beder   schedule 10.02.2018