strcmp错误比较转换后的宽字符串

时间:2011-12-17 04:33:59

标签: c++ java-native-interface

我添加了这个,因为我试图转换Android NDK中的句柄WStrings 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;

} 

更新:对于某些不支持wstring的实现,建议使用typedef,所以我认为我需要,但现在有些东西不能像上面那样工作了。有一段时间没有使用C ++,所以我可以使用非常具体的说明。

基本上我有几十个const wchar_t * foo(const wchar_t * a,const wchar_t&amp; b) 还有很多wchar * []以及const wchar_t * memVariable;甚至包括这些的虚拟功能。

CrystalX对此有何看法?这是要走的路吗?

0 个答案:

没有答案