我添加了这个,因为我试图转换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对此有何看法?这是要走的路吗?