您当前的位置: 首页 > 

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

c函数sscanf的高级技巧

qianbo_insist 发布时间:2021-06-16 22:11:34 ,浏览量:0

在解析url过程中,有时需要非常简单的分解,这时候可以使用几种方法 例如 const char *url = “http://192.168.1.144:1551/AVTransport/cff47b40-2475-7ff1-7459-318ec45c9853/control.xml”; 把这个字符串分解成为 http://192.168.1.144:1551 和 /AVTransport/cff47b40-2475-7ff1-7459-318ec45c9853/control.xml 如何做才是效率最高的

1 regex

这个毋庸置疑非常方便,使用c++的regex也是可以的,其他语言都有这种类似的方法,缺陷是要记住公式一样去使用regex

2 sscanf

这个和regex是类似的,感觉不是很好,但是熟练的情况下推荐使用 定义一个数据结构

typedef struct s_url
{
    /*
	1 
	ws://host:port/live/home?flag=push&id=1001
	2 
	/live/id?flag=push?id= 1001
	*/	
	char m_host[32];
	int  m_port;
	char m_app[32];
	char m_id[32];
	char m_para[1024];

}s_url;

接下去使用sscanf来匹配字符和字符串

  int main() 
  {
	const char *url = "http://192.168.1.144:1551/AVTransport/cff47b40-2475-7ff1-7459-318ec45c9853/control.xml";
	const char *pos = url;
	char buffer1[256] = {0};
	char buffer2[256] = {0};
	const char *pos = url;
	if (*(pos + 4) == ':')
		pos += 7;
	s_url surl;
	sscanf(pos, "%[^:/]:%d/%[^:/]/%[^:?]", surl.m_host, &surl.m_port,
		surl.m_app, surl.m_id);
	cout             
关注
打赏
1663161521
查看更多评论
0.0350s