【问题标题】:Convert unsigned char* array to std::string将 unsigned char* 数组转换为 std::string
【发布时间】:2012-11-04 03:45:46
【问题描述】:

我正在使用此代码将 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]!

-> 需要类似:dataToSendStr "000004C0"

感谢您的帮助!

【问题讨论】:

  • 顺便说一句,您不必使用for() ... 构造将元素写入流。如果你想避免手写循环,你可以使用copy( dataToSend, dataToSend+sendLength, ostream_iterator&lt;string&gt;(convertStream) );
  • 当你说“需要类似的东西”时,你的意思是“这是我想要给这个输入的确切字符串”吗?

标签: c++ arrays stringstream stdstring


【解决方案1】:

如果需要,请使用 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]);
}

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 2011-07-23
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多