C++ 使用std::stringstream读取/写入无符号字节
我正在尝试将未签名字符写入stringstream 我需要写入的信息包含0x00。我需要将0到40的值作为实际数字值写入,而不是ASCII字符 编辑:为了澄清,我写的不仅仅是0-40的值。它需要是二进制的。这些输入的东西需要保持原样,而不是在写入流后变成字符 下面是我正在做的事情的jistC++ 使用std::stringstream读取/写入无符号字节,c++,stringstream,binaryreader,binarywriter,C++,Stringstream,Binaryreader,Binarywriter,我正在尝试将未签名字符写入stringstream 我需要写入的信息包含0x00。我需要将0到40的值作为实际数字值写入,而不是ASCII字符 编辑:为了澄清,我写的不仅仅是0-40的值。它需要是二进制的。这些输入的东西需要保持原样,而不是在写入流后变成字符 下面是我正在做的事情的jist TCHAR _buffer[2]; // This is part of the problem, I figure, since its a char _buffer[0] = 0x00; _buff
TCHAR _buffer[2]; // This is part of the problem, I figure, since its a char
_buffer[0] = 0x00;
_buffer[1] = 0x01;
tstringstream s;
s.write(_buffer, sizeof(_buffer));
最终发生的是0x00导致stringstream结束,而0x01似乎永远不会到达那里
我以类似的方式阅读:
stream.readsome(_buffer, sizeof(_buffer));
而且它似乎不想玩得很好,因为正在编写0x00,导致整个过程刚刚结束
是这样,还是我遗漏了什么?我尝试过使用ios_base::binary,也尝试过使用uint8_t而不是TCHAR,但这似乎会造成铸造等方面的混乱。我担心这可能是必需的路线,但我想在开始之前确定一下
长话短说,我试图找到一个与C++的二进制读写器等价的C++。
谢谢 以下内容在VS2012上编译:
#include <iostream>
#include <sstream>
#include <string>
int main()
{
wchar_t buf[] = { 0x0, 0x1, 'a', 'b', 'c' };
std::wstring s(buf);
std::wstringstream ss;
ss.write(buf, 5);
const std::wstring& chars = ss.str();
for (std::wstring::const_iterator it = chars.begin(); it != chars.end(); ++it)
std::cout << std::hex << *it << '\n';
#包括
#包括
#包括
int main()
{
wchar_t buf[]={0x0,0x1,'a','b','c'};
标准::wstring s(buf);
std::wstringstream ss;
写(buf,5);
常量std::wstring&chars=ss.str();
对于(std::wstring::const_迭代器it=chars.begin();it!=chars.end();++it)
std::cout-Well,这当然很有趣,因为这也是我所拥有的。可能是我跳了枪,不应该相信调试器中显示的内容。那么问题可能实际上存在于其他地方,可能是因为我稍后读取值时进行的字符串转换。。。