当我从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)
。
那么有没有一种好方法(不需要手动移位)来实现它?
答案 0 :(得分:1)
您总是可以创建一个包含short
的类,然后定义自定义operator>>
和operator<<
来读取/写入流中的值,该值通过调用{来处理字节排序分别为{1}}和ntohs
。
然后,将您示例中htons
的用法替换为新的班级类型。
作为其功课,我不会提供实施。