2016-09-09 3 views
1

У меня есть матрица 9 3x3 всех нулей. Я пытаюсь вывести его в основной форме строки, чтобы он выглядел. ковариации: 0,0,0,0,0,0,0,0,0,Как испустить список через запятую в YAML

Я попытался

out1 << YAML::Key << "covariance"; 
out1 << YAML::Literal<< covariance[0][0]<< "," << covariance[0][1]... etc. 

Но я получаю:

ковариации: 0 "" : 0 что я делаю неправильно?

примечание: Я НЕ хочу [0,0,0,0,0,0,0,0,0]. Я хотел бы без скобок

+0

'[0,0,0,0]' без кронштейнов даже не является допустимым YAML это? Итак, как вы можете это сделать? –

+0

В соответствии с этим http://www.yamllint.com/ –

+0

(заменил мой предыдущий комментарий). В yamllint он интерпретирует «ковариацию: 1, 2, 3» как «ковариацию: 1, 2, 3» и интерпретирует «ковариацию: 1,2,3» как «ковариацию: 123». Что указывает на важность пробела [я новичок в YAML :-)]. @Ariel, вы ожидаете пробелы после запятых в вашем выходе? –

ответ

0

Построить строку вверх, а затем распечатать его:

std::stringstream value; 
for (int i=0;i<N;i++) { 
    value << covariance[0][i]; 
    if (i + 1 < N) { 
    value << ","; 
    } 
} 
YAML::Emitter out; 
out << YAML::BeginMap; 
out << YAML::Key << "covariance" << YAML::Value << value.str(); 
out << YAML::EndMap; 

Дело в том, что значение вы печатаете не список YAML, это просто обычный строка, которая выглядит немного похожей на YAML. Поэтому вы не можете использовать yaml-cpp, чтобы отформатировать его для вас; вам нужно сделать это самостоятельно.

+0

Верно ли, что 'ковариация: 1, 2, 3, 4' не является допустимым документом YAML? Если это так, может быть полезно подтвердить, что явно в ответе для тех из нас, которые не очень хорошо знакомы с YAML –

+0

@AaronMcDaid 'ковариация: 1, 2, 3, 4' является допустимым документом YAML; но это карта с ключом 'covariance' и значением' 1, 2, 3, 4', оба из которых являются скалярами. Дело в том, что это значение является скаляром, а не последовательностью. –

+0

Ваш текущий ответ будет выводить 'ковариация: 1,2,3,4'; т.е. без пробелов. Мои эксперименты с yamllint предполагают, что читатели YAML затем игнорируют запятые в этом выходе и читают его как скаляр '1234'. Возможно, yamllint неверен, но это предполагает, что вы должны добавить пробел после каждой запятой. –

Смежные вопросы