将使用malloc分配的char *复制到std :: string

时间:2015-12-12 19:06:08

标签: c++ string

您好我试图复制 char *std::stringchar *变量分配给malloc,副本I之后希望免费char *因为我非常确定std::string不会释放它。我想这样做而不影响新创建的std::string

typedef struct {
  std::string name;
} st;

st fst;
name = (char *) malloc(len + 1);
for (i = 0; i<len; i++)
    name[i] = name_orig[offset + i]; //name_orig is const unsigned char *
name[i] = 0;

fst.name.assign(name,len);
free(name);
cout << fst.name << endl; // prints "wiped"

1 个答案:

答案 0 :(得分:0)

malloc'字符串和副本是不必要的。你可以做到

typedef struct {
  std::string name;
} st;

st fst;

fst.name.assign(reinterpret_cast<const char*>(&name_orig[offset]), len);