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

时间:2013-03-20 13:40:11

标签: c++ string null char

我正在开展一个我必须传输序列化数据的项目。数据使用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!

欢呼声, 亚历

1 个答案:

答案 0 :(得分:5)

为什么不做呢

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

即使在其中嵌入了'\0'个字符,也会复制整个字符串。