C++求助 字符串遇到 0x00(二)
https://bbs.bccn.net/viewthread.php?tid=502521&page=1#pid2732833上次的问题在rjsp版的帮助下解决了,rjsp版果然厉害。
这次遇到一个新的问题,需要各位朋友的帮助,本人C++用的不多,学艺不精。
===========
拿到一个LPVOID* 指针,测试过发现指针的类型是wchar_t*。而且里面有数值。(数组中有非常多的0x00)。
我需要获取wchar_t*的数组长度。问题跟上一个贴一摸一样。上一次是用sizeof(char *)解决的。
这一次sizeof(wchar_t*)就算不出来了,请求指教。
如果用strlen(wcslen(wchar_t*))计算字符串长度,那么遇到0x00就退出。
wchar_t* p_t = _T("129099\0\0xxaa");
std::cout << wcslen(p_t);
std::cout << "\n";
std::cout << sizeof(p_t);
std::cout << "\n";
std::cout << sizeof(*p_t);
std::cout << "\n";
std::cout << sizeof(&p_t);
百度搜索了很多结果 有用while循环的。结果也是一样。跟wcslen一模一样,0x00忽略掉。
int arrayVlenth(_TCHAR* p)
{
int len = 0;
while (*p)
{
p++;
len++;
}
return len;
}
int arrayLNlenth( _TCHAR** p)
{
int len = 0;
//while (**p) //提示:0xC0000005: 读取位置 0xCDCDCDCD 时发生访问冲突。
while (**p) //**p是值
{
p++;
len++;
}
return len;
}