我正在开展一个我必须传输序列化数据的项目。数据使用boost框架序列化,然后存储到字符串流中,最后存储到std :: string。为了传输数据,存储数据(存储为char *,给定!)和字符串的长度,并且可以在目的地处提取数据。但是,在尝试提取数据时,我只获得空字符串。到目前为止我尝试过的方法是:
C[i]=*new std::string(content, getDataChunk(), content.getDataLength());
或
C[i].append(content.getDataChunk(), content.getDataLength());
而std :: string * C = new std :: string [K],i< K.
char* p = content.getDataChunk();
int l = content.getDataLength();
for (int j = 0; j < l; j++) {
C[i].insert(j, p[j], 1);
}
(这在一开始就引发了一个异常 - 我猜是因为NULL值!)
显然,strcpy()不起作用,因为它使用char *作为目标,再次以NULL结尾...
你们有没有人知道如何解决这个问题?我希望我不是每天都会问一些问题,但是在答案量很大的情况下很难消除这个机会;)
您的任何提示都非常感谢 - TIA!
欢呼声, 亚历
答案 0 :(得分:5)
为什么不做呢
C[i] = std::string(content.getDataChunk(), content.getDataLength());
即使在其中嵌入了'\0'
个字符,也会复制整个字符串。