我有以下问题:
我必须拆分已经在字符串中序列化的HTTP标头。目前的格式如下:
Content-type:xml \ nContent-Length:12 \ nlast-modified:date \ n ..etc etc
我需要将标题的键和值存储到std :: map中。
(map["Content-type"] = "xml"; map["Content-Length"] = "12" ...)
有关如何做到这一点的任何建议? 是否可以使用boost:正则表达式?
答案 0 :(得分:3)
没有必要为此使用正则表达式,尤其是不提升(我仍然认为这是一个可怕的,可怕的依赖,因为它的大小本身)。由于分隔符是固定的并且总是相同的字符(换行符和冒号),因此不需要使用任何正则表达式引擎。
相反,使用strtok()
或其中一个相关函数(例如宽字符版本;请记住,此函数有其自身的缺点和问题,具体取决于实际用法,例如它可能不是线程安全的)
第一步,您可以使用它将标题拆分为单行。收到空行后,您就会知道标题已结束。
然后,要阅读标题行,您需要将其拆分为:
,这样既可以获得密钥也可以获取值。
作为替代方案,您也可以使用std::string
和成员函数find_first_of()
来查找正确的位置。战略的其余部分将是相同的。