Я не очень знаком с классом String, но если оттуда можно вытащить указатель на c-строчку, то функция, которая тебе поможет - ниже.
#include <stdlib.h>
#include <stdio.h>
// Вход:
// p - строчка, не const char !!
// varname - если не NULL, то туда будет записан указатель на имя переменной
// Возвращаемое значение:
// NULL или строчка-значение переменной
//
// Пример использования
//
// char *varname;
// char *value = var_split(get,&varname);
static char *var_split(char *p, char **varname) {
if (p && p[0] == '/' && p[1] == '?') {
p += 2;
if (varname)
*varname = p;
while (*p && *p != '=')
p++;
if (*p) {
*p = '\0';
return p + 1;
}
}
return NULL;
}
Минитест, если до этого дело дойдет
int main () {
char *test[] = {
"/?w=1",
"/?abc=166",
"/?variable%20name=",
"=",
"/=.",
"?/var",
"?/var=",
NULL,
};
int i = 0;
while (test[i]) {
char *get;
if ((get = strdup(test[i])) != NULL) {
char *varname;
char *value = var_split(get,&varname);
if (!value)
printf("%s : format error\r\n",test[i]);
else
printf("%s : split to [varname=%s] [value=%s]\r\n",test[i], varname, value);
}
i++;
}
return 0;
}