在解析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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?