I'm using a regex to separate the fields of an HTTP request:
GET /index.asp?param1=hello¶m2=128 HTTP/1.1
This way:
smatch m;
try
{
regex re1("(GET|POST) (.+) HTTP");
regex_search(query, m, re1);
}
catch (regex_error e)
{
printf("Regex 1 Error: %d\n", e.code());
}
string method = m[1];
string path = m[2];
try
{
regex re2("/(.+)?\\?(.+)?");
if (regex_search(path, m, re2))
{
document = m[1];
querystring = m[2];
}
}
catch (regex_error e)
{
printf("Regex 2 Error: %d\n", e.code());
}
Unfortunately this code works in MSVC but not with GCC 4.8.2 (which I have on Ubuntu Server 14.04). Can you suggest a different method of splitting that string using maybe normal std::string operators?
I don't know how to split the URL in different elements since the query string separator '?' may or may not be present in the string.