Answer the question
In order to leave comments, you need to log in
UrlEncode analog (or its implementation) for C++?
I need to convert a string to an escape sequence, please tell me the implementation in C++ (CLR/CLI).
I found UrlEncode in MSDN ( msdn.microsoft.com/ru-ru/library/system.web.httpse... but I can't get it to work.
Thank you.
Answer the question
In order to leave comments, you need to log in
Found in the bins. Don't pay attention to string type conversion, use your own.
Used when writing a search engine, it was the case =)
wstring urlencode(const string &c) { string escaped=""; int max = c.length(); for(int i=0; i<max; i++) { if ( (48 <= c[i] && c[i] <= 57) ||//0-9 (65 <= c[i] && c[i] <= 90) ||//abc...xyz (97 <= c[i] && c[i] <= 122) || //ABC...XYZ (c[i]=='~' || c[i]=='!' || c[i]=='*' || c[i]=='(' || c[i]==')' || c[i]=='\'') ) { escaped.append( &c[i], 1); } else { escaped.append("%"); escaped.append( char2hex(c[i]) );//converts char 255 to string "ff" } } wstring escaped_w = L""; wchar_t w[1024]; mbstowcs((wchar_t*)&w, escaped.c_str(), 1024); escaped_w = wstring(w); return escaped_w; } // Функция URL-декодирования. // Функция преобразует строку данных st в нормальное представление. // Результат помещается в ту же строку, что была передана в параметрах. void urldecode(char *st) { char *p=st; // указывает на текущий символ строки char hex[3]; // временный буфер для хранения %XX int code; // преобразованный код // запускаем цикл, пока не кончится строка (то есть, пока не // появится символ с кодом 0, см. ниже) do { // Если это %-код ... if(*st == '%') { // тогда копируем его во временный буфер hex[0]=*(++st); hex[1]=*(++st); hex[2]=0; // переводим его в число sscanf(hex,"%X",&code); // и записываем обратно в строку *p++=(char)code; // указатель p всегда отмечает то место в строке, в которое // будет помещен очередной декодированный символ } // иначе, если это "+", то заменяем его на " " else if(*st=='+') *p++=' '; // а если не то, ни другое - оставляем как есть else *p++=*st; } while(*st++!=0); // пока не найдем нулевой код }
Try using the InternetCanonicalizeUrl function:
msdn.microsoft.com/en-us/library/windows/desktop/aa384342%28v=vs.85%29.aspx
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question