разбора строк в c - PullRequest
       9

разбора строк в c

0 голосов
/ 29 ноября 2011

У меня есть такая строка:

{ "\\"name\\" => \\"{ 'a', 'b', 'c' }\\"**,**  \\"age\\" => \\"{6, 7, 8 }\\" " }

Это hstore, и, например, «a» может быть hstore to. Я хочу разобрать эту строку по запятая в C. при разборе вывод должен быть таким

array(
    array('name' => {'a','b','c'}, 'age' => {6, 7, 8 }) , 
    array(  ),
    array(  )...
 )

Ответы [ 3 ]

3 голосов
/ 29 ноября 2011

Кажется, это какой-то вложенный формат JSON . Вы рассматривали возможность использования библиотеки синтаксического анализа JSON, например .e.g. Янссон

1 голос
/ 29 ноября 2011

Если вы хотите разобрать запятыми, strtok() является одним из возможных вариантов. См. http://www.daniweb.com/software-development/c/threads/184836. Честно говоря, я не вижу, как анализ через запятую сделает эти данные более понятными, но это может быть сделано независимо.

0 голосов
/ 01 декабря 2011

Использование Ragel для генерации конечного автомата и реализации в C: http://ragel.org/

Немного кривой обучения, но оно того стоит. Возможность визуализации вывода в конечных автоматах помогает при отладке.

В настоящее время я использую его для создания еще одной библиотеки json. Который, как упоминалось в ответе выше, кажется довольно похожим. Не стесняйтесь учиться и копировать биты моего кода.

У меня есть код ragel, разделенный на 3 файла:

Который производит эти три файла C ++ (Вы можете создать C так же легко, если это необходимо):

Также, если интересно, вот схемы конечных автоматов, которые производит ragel: https://github.com/matiu2/yajp/tree/master/images

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...