0

我正在从事一个必须传输序列化数据的项目。使用boost框架对数据进行序列化,然后存储到 stringstream 中,最后存储到 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!

干杯,亚历克斯

4

1 回答 1

5

为什么不只是做

C[i] = std::string(content.getDataChunk(), content.getDataLength());

它会做正确的事,复制完整的字符串,即使它已经嵌入'\0'了字符。

于 2013-03-20T13:43:49.913 回答