C ++ - Регулярное выражение для разделения заголовка HTTP?

0

У меня есть следующая проблема:

Мне нужно разбить HTTP-заголовок, который был сериализован в строке. Текущий формат выглядит следующим образом:

Content-type: xml\nContent-Length: 12\nlast-modified: date\n..etc и т.д.

Мне нужно сохранить ключи и значения заголовка в std :: map.

(map["Content-type"] = "xml"; map["Content-Length"] = "12"...)

Любые предложения о том, как это сделать? Возможно ли это с помощью boost: regex?

Теги:
split
boost
token

1 ответ

3
Лучший ответ

Там нет необходимости использовать регулярные выражения для этого, особенно не повысить (я все еще считаю это ужасной, ужасной зависимостью из-за этого размера в одиночку). Поскольку разделители фиксированы и всегда одни и те же символы (разрывы строк и двоеточия), нет реальной необходимости использовать механизм регулярных выражений.

Вместо этого используйте strtok() или одну из связанных функций (например, широкоформатную версию), помните, что эта функция имеет свои собственные недостатки и проблемы, в зависимости от фактического использования, например, это может быть небезопасно.

Первый шаг, вы должны использовать его для разделения заголовка на отдельные строки. Когда вы получите пустую строку, вы узнаете, что заголовок закончился.

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

В качестве альтернативы вы также можете использовать std::string и функцию-член find_first_of() для поиска правильных позиций. Остальная часть стратегии будет такой же.

  • 0
    +1 только за первое предложение, я даже не читал дальше.
  • 0
    +1 за нерекомендуемые регулярные выражения ... -1 за неточное описание надстройки ... -1 за рекомендацию strtok .
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню