Я добавил это, потому что я пытаюсь преобразовать дескриптор WStrings
в Android NDK NDK не поддерживает широкие символы. Я мог бы использовать совет о том, как это сделать. Я думаю, что asciiConvert
метод больше не работает
typedef std::basic_string<wchar_t> WString;
WString val;
val=L"";
set_val(L"");
char* value=asciiConvert(get_val()); // value is 0x00000000
std::string token; // value is ""
if (strcmp(token.c_str(),value)==0) //ERROR HERE: INFINITE LOOP HERE I THINK since it will never be true.
ЗДЕСЬ ФУНКЦИЯ КОНВЕРСИИ:
char* asciiConvert(const wchar_t* wideStr, char replSpace) // replSpace == -1
{
if (wideStr == NULL)
return NULL;
char* asciiStr = new char[wcslen(wideStr) + 10];
sprintf(asciiStr, "%S", wideStr);
if (replSpace >= 0)
{
int len = strlen(asciiStr);
while (len)
{
if (asciiStr[len] == ' ')
asciiStr[len] = replSpace;
len--;
}
}
return asciiStr;
}
ОБНОВЛЕНИЕ: typedef рекомендуется для некоторых реализаций, которые не поддерживают wstring, поэтому я думаю, что мне нужно, но теперь что-то не работает, как описано выше. Некоторое время не использовал C ++, поэтому я мог бы использовать очень конкретные инструкции по этому вопросу.
В основном у меня есть десятки const wchar_t * foo (const wchar_t * a, const wchar_t & b)
и довольно много wchar * [], а также const wchar_t * memVariable; даже вирусные функции с ними.
Как насчет CrystalX для этого? Это путь?