使用ntohs()和stringstream

时间:2012-05-17 10:18:43

标签: c++

当我从ntohs()读取数据时,我有一个关于如何使用stringstream的问题。

以下代码:

read(ns, buf_receive, BUFFER_SIZE);

stringstreams ss(buf_receive);
char[2] a;
short int b;

ss << a[0] << a[1];
ss << b;

cout >> b;

我的问题在于收到的数据格式不仅仅是short。所以我不能将此函数直接放在buf_receive上,如下所示:ntohs(buf_receive),也不能将其用于b,如下所示:ntohs(b)

那么有没有一种好方法(不需要手动移位)来实现它?

1 个答案:

答案 0 :(得分:1)

您总是可以创建一个包含short的类,然后定义自定义operator>>operator<<来读取/写入流中的值,该值通过调用{来处理字节排序分别为{1}}和ntohs

然后,将您示例中htons的用法替换为新的班级类型。

作为其功课,我不会提供实施。