Незаконная запись блока с примером YAML-монстров в yaml-cpp

Я запускаю пример, найденный здесь, чтобы попробовать использовать YAML в C++. Я скопировал код дословно в test.cpp в новой папке проекта. Я скомпилировал YAML в статическую библиотеку и привязал ее к своему проекту. Я использую Ubuntu 11.10. Я использую следующую команду для компиляции:

    g++ -Wall -I. -g test.cpp -lyaml-cpp -L.

Я получаю следующее сообщение об ошибке:

    terminate called after throwing an instance of 'YAML::ParserException'
       what(): yaml-cpp: error at line 4, column 2: illegal block entry
    Aborted

В чем смысл этого исключения? А что может быть не так? Я не смог найти четкой документации о том, что может означать каждое из исключений, поэтому даже ссылка на эту информацию была бы полезна. Я, вероятно, не в себе, так как я новичок в YAML, использую библиотеки и Linux в этом отношении. Заранее спасибо за вашу помощь.

Изменить: ошибка возникает перед "parser.GetNextDocument (doc)". Кроме того, я запустил более простой пример с веб-сайта, на котором хранится один скаляр, и он работал нормально. Является ли исключение моим входным файлом или моим кодом?


person Joe    schedule 07.02.2012    source источник
comment
Можете ли вы использовать отладчик, чтобы узнать, где в примере кода это происходит?   -  person David Brown    schedule 07.02.2012
comment
Спасибо, Дэвид, я отредактировал основной пост, чтобы ответить на ваш вопрос.   -  person Joe    schedule 07.02.2012
comment
Какой пример вы используете? (На этой странице есть несколько примеров.)   -  person Jesse Beder    schedule 08.02.2012
comment
Пример монстра. Извините, что не разъяснил.   -  person Joe    schedule 08.02.2012


Ответы (1)


Ошибка указывает на проблему с входным файлом (monsters.yaml). Убедитесь, что вы скопировали его точно. Он утверждает, что есть ошибка в строке 4, столбце 2, поэтому вы можете сначала посмотреть на это место (но yaml-cpp не очень хорош с определением местоположения ошибок, так что это может быть не то место, на которое стоит смотреть).

В чем нужно убедиться:

  • пробелы, а не вкладки
  • правильное количество пробелов для отступа
person Jesse Beder    schedule 08.02.2012
comment
Большое спасибо! Это исправило это. - person Joe; 09.02.2012