Как вывести строку из цифр с ведущими нулями, как допустимую строку yaml в yaml-cpp? - PullRequest
0 голосов
/ 22 февраля 2019

Создание строки yaml с ведущими нулями не экранируется кавычками в yaml-cpp.Поэтому запись строки в текстовый файл не является допустимой строкой yaml. leading_zeros: 00005 равно 5 в соответствии со спецификацией yaml 1.2 (Попробуйте сами: http://www.yamllint.com/)

YAML::Node node;
node["leading_zeros"] = "00005";
std::cout << YAML::Dump(node)<<std::endl;
// output: leading_zeros: 00005
// instead of:leading_zeros: "00005"

Как заставить yaml-cpp выйти из режима ожиданиястрока с начальными нулями? То есть это не будет интерпретироваться как целое число из другого парсера yaml?

Экранирование вручную не кажется правильным ответом.

node["leading_zeros"] = "\"00005\"";

Обновление: цифразначение хранится в YAML :: Node! Я уверен, что это ошибка.

1 Ответ

0 голосов
/ 22 февраля 2019

Используйте YAML::Emitter напрямую:

YAML::Emitter out;
out << YAML::BeginMap;
out << YAML::Key << "leading_zeroes" << YAML::Value;
out << YAML::Value << YAML::DoubleQuoted << "00005";
out << YAML::EndMap;
...