【发布时间】:2009-12-06 15:05:56
【问题描述】:
我正在编写一些必须通过 TCP/IP 发送数据的 C++ 代码。我希望这段代码可以在 Linux/Windows/Osx 上移植。现在,由于这是我第一次编写可移植的网络代码,我基本上需要一些简单的函数来添加到某些对象,例如:
class myclass{
...member...
public:
string serialize(){
std::ostringstream out();
out << member1;
out << member2;
out << member3;
return out.str();
}
}
...这就是我现在所需要的。无论如何,我开始阅读与 ostringstream 相关的文档,结果发现了二进制/文本问题。事实上,它会将换行符转换为每个系统的正确顺序。例如,假设一个成员是指向 const char* foo = "Hello\nMan\n" 的指针,它将在 linux 上以特定字节序列翻译,在 windows 上以另一个字节序列翻译......等等。我的字节将通过互联网发送到一个数据包中,不同的操作系统机器会读取它们,我认为会出现问题......现在我读到我可能会用ostringstream(ios::bin) 初始化ostringstream......它会解决问题吗(前提是我将使用将使用istringstream(ios::bin) 的反序列化函数???我对整个情况感到困惑,如果您可以花一些澄清的行,将不胜感激。
谢谢。
【问题讨论】:
标签: c++ networking cross-platform stream