C++ 由缓冲到字符串

C++ 由缓冲到字符串,c++,string,byte,bytebuffer,tizen,C++,String,Byte,Bytebuffer,Tizen,我在Tizen中开发了一个Http请求和响应应用程序。我能够成功地发布并获得回复。(检查身体长度)。 我得到的答复是拜特伯弗 ByteBuffer* pBuffer = pHttpResponse->ReadBodyN(); 我的打字技术有点差。我想把这个字节缓冲符转换成一个字符串,以便在标签中设置。字节缓冲符中的数据是以零结尾的ASCII码吗?在这种情况下,您可以创建如下字符串: String str((const char*)(byteBuf.GetPointer())); 否则,

我在Tizen中开发了一个Http请求和响应应用程序。我能够成功地发布并获得回复。(检查身体长度)。 我得到的答复是拜特伯弗

ByteBuffer* pBuffer = pHttpResponse->ReadBodyN();

我的打字技术有点差。我想把这个字节缓冲符转换成一个字符串,以便在标签中设置。

字节缓冲符中的数据是以零结尾的ASCII码吗?在这种情况下,您可以创建如下字符串:

String str((const char*)(byteBuf.GetPointer()));
否则,只要您知道编码是什么,就可以使用解码
ByteBuffer
。例如:

// Construct some test data. In your case the buffer would come
// as a HTTP response.
char chars[] = "\xE5\xE6\xF6";  // æåø in ISO-8859-1
ByteBuffer byteBuf;
byteBuf.Construct((byte*)chars, 0, 3, 3);

Encoding* pEnc = Encoding::GetEncodingN(L"ISO-8859-1");
String str;
pEnc->GetString(byteBuf, 0, byteBuf.GetRemaining(), str);

Label *pLabel = static_cast<Label*>(GetControl(IDC_LABEL1));
pLabel->SetText(str);
//构造一些测试数据。在你的情况下,缓冲区会来
//作为HTTP响应。
字符字符[]=“\xE5\xE6\xF6”;//ISO-8859-1中的æåø
ByteBuffer byteBuf;
构造((字节*)字符,0,3,3);
Encoding*pEnc=Encoding::GetEncoding(L“ISO-8859-1”);
字符串str;
pEnc->GetString(byteBuf,0,byteBuf.GetRemaining(),str);
Label*pLabel=static_cast(GetControl(IDC_LABEL1));
pLabel->SetText(str);

ByteBuffer是一个类吗?它有任何getchar()公共成员函数吗?@NishithJainMR。否。它有GetWChar。您是在寻找
wstring
还是
字符串
?ByteBuffer的编码是什么?如果数据是以零结尾的ASCII码,它就会工作,因此您得到的响应显然不符合该标准。你知道它是什么编码吗?看起来像是用了8位编码。不过,
ByteBuffer
中可能没有零终止符。您可以将原始数组复制到另一个(更长)数组并附加零终止符。或者可以在循环中调用
GetByte
,并将每个字节附加到
字符串中。你是对的。我正在使用另一个没有编码的链接。现在,我可以使用循环将项目放入字节数组,但是,当我将字节设置为标签_responseLabel.SetText(byteStorage)时;它是用方形盒子印刷的。我不知道为什么它会这样打印,即使xml url没有编码。你能帮我吗?如果编码未知,我不知道你该怎么解决。但只要知道编码,就可以使用
Tizen::Text::encoding
将数据解码为
字符串。请参阅我的最新答案。