Невозможно выдать пустое значение с yaml- cpp - PullRequest
2 голосов
/ 02 мая 2020

Я хотел бы выдать пустое значение, но когда я назначаю пустую строку для выдачи, выход не является технически пустым.

Фрагмент кода:

YAML::Emitter out;
std::string name;
out << YAML::Key << "name";
out << YAML::Value << name;

Ожидаемый вывод yaml:

name:

Фактический вывод yaml:

name: ""

Как вы видите, у меня определена пустая строка, и я ожидаю, что вывод yaml будет фактически пустым. Это намеренное поведение? Если так, есть ли способ обойти это? Я хочу, чтобы весь вывод yaml был свободен от кавычек.

1 Ответ

0 голосов
/ 02 мая 2020

YAML

name:

не имеет строкового значения для ключа name; на самом деле это нулевое значение. Смотрите, например, онлайн-парсер здесь ; каноническое представление YAML выглядит так:

!!map {
  ? !!str "name"
  : !!null "null",
}

yaml- cpp пытается убедиться, что то, что вы сказали («напишите эту пустую строку»), является способом анализа полученного YAML, поэтому он записывает пустая строка как "".

Если вы хотите записать нулевое значение, то либо не пишите значение, либо пишите YAML::Null. Последний (я полагаю) произведет

name: ~

, который является канонической формой нуля.

...