我正在学习使用lambda表达式的C++技术。
我试图将已经使用for或while编写的代码更改为lambda表达式,并且我有一个与lambda相关的问题。
我正在尝试使用lambda或for_each(C++11)来更改代码。应该如何更改呢?
以下是要更改的代码:
std::string PointToString(void* p_pData)
{
char* p = (char*)p_pData;
int iLength = 0;
std::memcpy(&iLength, p, sizeof(int));
p += sizeof(int);
std::string sRet;
std::array<char, 3> szB;
sRet.append("0x");
for ( int i = 0; i < iLength; i++ )
{
sprintf(szB.data(), "%02X", (unsigned char)*(p++));
sRet.append(szB.data());
}
return sRet;
}
这段代码将内存值转换为十六进制代码。
该函数的调用方式如下:
char szB[15] = {0x0b, 0x00, 0x00, 0x00, 0xc7, 0xd1, 0xb1, 0xdb, 0xc0, 0xd4, 0xb4, 0xcf, 0xb4, 0xd9, 0x2e};
void* p = nullptr;
p = (void*)szB;
sRet = PointToString(p);
结果可能是0x0B000000C7D1.....
我想在PointToString函数中尝试lambda表达式。我该如何修改这个函数?
0x0B
是11
,所以即使它读取了长度,你的输入也多了2个字节。 - M.M