首先,我有一个这样的数组:
unsigned char testArray[4]={0x00,0x10,0x20,0x00};
应该是以下方法的输入:
void ReadArray(unsigned char * input)
{
std::string str( input, input + sizeof input / sizeof input[0]);
std::cout << str << std::endl;
}
我正在寻找一种方法来获得类似于:00102000的字符串。
使用
for (int i =0; i < str.size(); i++)
{
cout << str[i];
}
我甚至无法显示这些值。
我通常是C#家伙,我在这里有点失落。提示会很好。
更新
这是一个有效的版本:
void Read(unsigned char * input)
{
std::string str( input, input + sizeof input / sizeof input[0] );
std::stringstream ss;
for (int i =0; i < str.size(); i++)
{
ss << std::hex << (int)str[i];
std::string mystr = ss.str();
if (mystr.size() == 1)
mystr = "0" + mystr;
cout <<mystr;
ss.str("");
}
}
结果
答案 0 :(得分:3)
sizeof input / sizeof input[0]
不会给你数组的大小。一旦将数组作为指向函数的指针传递,就会失去从指针获取数组大小的所有能力。
要解决此问题,您需要将数组的大小传递给函数,或者您可以传递开始和结束指针。你也可以使用一个模板来获得你的大小:
template<typename T, size_t SIZE>
void ReadArray(T (&input)[SIZE]) {
std::string str( input, input + SIZE);
std::cout << str << std::endl;
}