用istream读取boost basic_stream时出现问题
Problem reading from boost basic_streambuf with an istream
我有一些问题,从流读取,这是通过一个asyc_read()填充。当在VS中步进我的代码时,我可以看到正确的数据在缓冲区中,但是当我用
读取它时:std::istream is = std::istream(&buffer_);
unsigned short type;
unsigned short size;
is >> type;
is >> size;
类型和大小变量保持其初始值。不会抛出错误或任何东西。我真的很困惑,为什么这种情况下,我见过类似的代码读取数据到变量在完全相同的方式
编辑:下面是我的async_read代码,它调用了上面的代码:
boost::asio::async_read(socket_,
buffer_,
boost::asio::transfer_at_least(4),
boost::bind(&Session::handleReadBody, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
如果type
保持其初始值,则显然is >> type;
失败:检查流(if(is) {...}
)的状态以确定。
并且,看到您有transfer_at_least(4)
,我怀疑您正在传输二进制数据,而不是空白分隔的ASCII字符字符串。如果是这种情况,使用read()
:
int16_t type, size;
data.read(reinterpret_cast<char*>(&type), sizeof type);
data.read(reinterpret_cast<char*>(&size), sizeof size);
但是要注意字节顺序
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 使用mongocxx驱动程序时包含头文件问题