将unsigned char *数组转换为std :: string

时间:2012-11-15 14:14:16

标签: c++ arrays stringstream stdstring

我正在使用此代码将unsigned char *(指向256个值的数组)转换为std :: string:

int ClassA::Func(unsigned char *dataToSend, int sendLength)
{
    std::stringstream convertStream;
    std::string dataToSendStr = "";

    for(int i=0; i<=sendLength; i++) convertStream << dataToSend[i];    

    while(!convertStream.eof()) convertStream >> dataToSendStr;
    ...
}

但是我有这种格式的dataToSendStr:

dataToSendStr "" 
[0]           0x00 
[1]           0x00 
[2]           0x04 
[3]           0xC0

如果我现在使用这个值我只得到“”而不是重要值[0-3]!

- &GT;需要类似:dataToSendStr“000004C0”

谢谢你的帮助!

1 个答案:

答案 0 :(得分:6)

如果需要,可以使用IO操纵器std::hex(这是我认为基于需要类似问题的一部分)的十六进制表示形式dataToSend中的字符:

std::ostringstream convertStream;
convertStream << std::hex << std::setfill('0');

for (int i = 0; i < sendLength; i++)
{
    convertStream << std::setw(2) << static_cast<short>(dataToSend[i]);
}