0xd34df00d
28.04.2012 14:14 Azoth_primary
Пиздец просто! http://www.velocityreviews.com/forums/t5...
Особенно понравилось решение с запихиванием всех возможных percent-encoded entities в мапу/список.
Recommended by:
@pooq: моча съела говно
https://github.com/nobodyzzz/foo_vksearc... ;(
А чем не нравится, собственно, решение с мапой?
if (ch == '%')
{
if (i + 3 > size)
{
IsValid_ = false;
return;
}
int val = 0;
std::istringstream is (url.substr (i + 1, 2));
if (is >> std::hex >> val)
{
current += static_cast<char> (val);
i += 2;
}
else
{
IsValid_ = false;
return;
}
}
Поздно :(
Что это за кусок кода? Здесь показана какая-то ветвь "if ch == '%'", которая непонятно почему является чем-то особенным.
Случай парсинга percent-encoding же. Хуита последовательно идет по строке.
http://pastebin.com/gBeqpsRX
там беруться 2 цифры после %, конвертяться в int и кастятся к char'у? istringstream не оверхед ли? =)
кстати странно что в этом сраном wxWindows есть метод для unescape, а для escape нет =)
А там не факт, что цифры. Можно, конечно, учитывать аски, делать всякие isalpha/isnum, но, кажется. это быстрее написать )
Ааа, блять. Decoding, а не encoding. Ну да, тогда не нужны мапы. А при энкодинге нужны, только не map а set, чтоб проверять нужно ли энкодить символ.