[英]C++ - Regular expression to split HTTP header?
我有以下问题:
我必须拆分已序列化为字符串的HTTP标头。 当前格式如下:
内容类型:xml \\ n内容长度:12 \\最后修改:日期\\ n ..etc等
我需要将标头的键和值存储到std :: map中。
(map["Content-type"] = "xml"; map["Content-Length"] = "12" ...)
有什么建议吗? boost:regex有可能吗?
不需要为此使用正则表达式,尤其是不用boost(我仍然认为它是一个可怕的,令人恐惧的依赖项,因为它本身的大小很大)。 由于分隔符是固定的,并且始终是相同的字符(换行符和冒号),因此实际上不需要使用任何正则表达式引擎。
而是使用strtok()
或相关函数之一(例如,宽字符版本;请记住,此函数有其缺点和问题,具体取决于实际用法,例如,它可能不是线程安全的)。
第一步,您将使用它将标题拆分为单行。 收到空行后,您将知道标题已结束。
然后,要读取标题行,请在:
处将其拆分,这将为您同时获得键和值。
另外,您也可以使用std::string
和成员函数find_first_of()
查找正确的位置。 该策略的其余部分将相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.