繁体   English   中英

C ++-拆分HTTP标头的正则表达式?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM