0
//vector.h
        struct Vector
    {
        public:
        double x;
        double y;
        double z;
    }

我有这个库,它为我提供了某些类及其方法。如何在我自己的应用程序代码中扩展这些类?

现在我memcopy将此向量放入一个 char 数组,然后 udp 发送它,然后 udp 在另一端接收,然后 memcopy 将它从带有3*sizeof(double).

我如何扩展结构或类似的类,以便我可以简单地

std::string<<vector;

然后将此字符串发送到我的 udp 发送

和udp接收然后将接收到的消息直接复制到向量中?

4

1 回答 1

2

您需要/想要重载operator<<

std::ostream &operator<<(std::ostream &os, Vector const &v){ 
   return os << v.x << "\t" << v.y << "\t" << v.z;
}

请注意,您将使用它来写入一个,而不是直接写入一个字符串std::ostringstream(但获取 astd::string的内容是微不足道的)stringstream

对于阅读,您可以使用以下方法进行几乎相同的操作operator>>

std::istream &operator>>(std::istream &is, Vector &v) { 
    return is >> v.x >> v.y >> v.z;
}

请注意,当您编写时,这不会自动在Vector对象之间插入分隔符。通常你会想要\n在一个向量和下一个向量之间插入类似的东西。

另请注意,这以文本格式存储数据。根据您的情况,您可能更喜欢二进制文件——它通常更紧凑,读写速度更快(但也更脆弱,因此看似轻微的损坏可能会破坏整个文件)。

哦——另一个细节。如果不清楚,这些函数应该是你的Vector类的成员,但是如果你放入Vector命名空间,你希望将这些函数与它保持在同一个命名空间中。

于 2013-06-28T05:25:57.543 回答