Ошибка strcmp при сравнении преобразованной широкой строки - PullRequest
1 голос
/ 17 декабря 2011

Я добавил это, потому что я пытаюсь преобразовать дескриптор 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 для этого? Это путь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...