我最怜君中宵舞
道“男儿到死心如铁”
看试手,补天裂
解析HTTP响应报文的时候,响应头中除了第一行,其他行都是key: value
结构,怎么高效方便地解析成map类型的数据呢?
我首先想到的就是sscanf函数,于是写了如下程序:
#include <cstdio>
int main() {
char *str = "sss: sssss";
char key[5], value[10];
sscanf(str, "%s: %s", key, value);
std::cout << key << ": " << value;
return 0;
}
然后输出却是:
sss::
显然不行,于是开始上网搜,慢慢发现sscanf函数居然支持正则,没错!!!支持正则!!!(部分)
什么都需要自己造轮子的C/C++居然有库函数支持正则。。。
于是,我们便可以写出如下程序:
#include <cstdio>
int main() {
char *str = "sss: sssss";
char key[5], value[10];
sscanf(str, "%[^:]: %[^:]", key, value);
std::cout << key << ": " << value << std::endl;
return 0;
}
输出:
sss: sssss
没错,输出是正确的,我们想要的结果!!!