C/C++中分割字符串

我最怜君中宵舞

道“男儿到死心如铁”

看试手,补天裂

解析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

没错,输出是正确的,我们想要的结果!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值