(стук в дверь)
- Войдите.
- Здавствуйте!
- Жалуйтесь.
- Доктор, похоже у меня наблюдается хроническая необходимость твоего мнения.
- Излагайте...
Итак, представляю вашему вниманию ещё одну полезную ненужность. Это cgi-скрипт на C++ для разгадывания кроссвордов. GPL v2.
Поддерживаемые функции:
- Отгадывание кроссворда;
- Проверка правильности отгадывания кроссворда;
Для не Ъ: рабочий вариант на FreeBSD-сервере проверял на своём Sony Ericsson K700i, а для Ъ: исходный код версия 1.0.0.
Сам нашёл вот такой странный момент(кстати, что у меня с подсветкой?):
wstring TCrossword::urlDecode(string &sWord)
{
//На входе обычная string-строка в url-кодированном виде
string sDecodedWord;
wstring wsDecodedWord;
wchar_t wcDecodedWord[UCHAR_MAX + 1];
char cData;
const int ucPercent = 37;//Символ %(процент)
int iData;
unsigned char i;
for (i = 0; i < sWord.length(); i++)
{
if (int (sWord[i]) == ucPercent)
{
//Получить 2-а символа после %
//"%x" - преобразовать из 16-ричной формы в 10-тичную
sscanf (sWord.substr(i + 1, 2).c_str(), "%x", &iData);
//Скопировать полученный wide-код в char-переменную
cData = static_cast<char>(iData);
sDecodedWord += cData;
i += 2;
}
else
{
sDecodedWord += sWord[i];
}
}
//Многобайтовый string(unicode-символ в 2-ух символах char) преобразовать в нормальную unicode-строку "wstring"
mbstowcs(wcDecodedWord, sDecodedWord.c_str(), strlen(sDecodedWord.c_str()));
wsDecodedWord = wcDecodedWord;
return wsDecodedWord;
}
char cData;
int iData;
cData = static_cast<char>(iData);
Дальше ваши замечания.
Благодарю!
P.S. А можно мне четвёртый тег?