在解析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
关注
打赏