char*(包含空值)到std :: string知道长度

ast*_*ffe 0 c++ string null char

我正在开发一个我必须传输序列化数据的项目.使用boost框架序列化数据,然后将其存储到字符串流中,最后存储到std :: string.为了传输数据,存储数据(存储为char*,给定!)和字符串的长度,并且可以在目的地提取数据.但是,在尝试提取数据时,我只获得空字符串.到目前为止我尝试过的方法是:

C[i]=*new std::string(content, getDataChunk(), content.getDataLength());
Run Code Online (Sandbox Code Playgroud)

要么

C[i].append(content.getDataChunk(), content.getDataLength());
Run Code Online (Sandbox Code Playgroud)

而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);
        }
Run Code Online (Sandbox Code Playgroud)

(这在一开始就引发了异常 - 我猜是因为NULL值!)

显然,strcpy()将不起作用,因为它使用char*作为目标,再次以NULL结尾...

你们有没有人知道如何解决这个问题?我希望我不是每天都会问一些问题,但是在答案的数量上很难消除这个机会;)

您的任何提示都非常感谢 - TIA!

欢呼,亚历克斯

Som*_*ude 5

为什么不这样做呢

C[i] = std::string(content.getDataChunk(), content.getDataLength());
Run Code Online (Sandbox Code Playgroud)

它会做正确的事情,复制完整的字符串,即使它中嵌入了'\0'字符.