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

char* (containing null values) to std::string knowing length

本文关键字:string std 包含 空值 Char      更新时间:2023-10-16

我正在做一个项目,我必须传输序列化的数据。数据使用boost框架序列化,然后存储到stringstream中,最后存储到std::string中。为了传输数据,数据(存储为char*,给出!)和字符串的长度都被存储,并且可以在目的地提取。然而,当试图提取数据时,我只得到空字符串。到目前为止,我尝试的方法是:

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

C[i].append(content.getDataChunk(), content.getDataLength());

where std::string *C=new std::string[K], i 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!

欢呼,亚历克斯

为什么不直接做呢

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

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