将const复制到char *

时间:2011-11-16 05:54:35

标签: c++

我有

       std::ostringstream out;
       out << name << len << data;
       std::string const value = out.str();

我想将此const值复制到char *

        char* buff; 
        size_t length = strlen(value); 
        buff = new char[(strlen(value))+ 1]; 
        memcpy(nm, value , length + 1); 

但它仍然给我错误?你能告诉我我做错了什么吗?谢谢。

2 个答案:

答案 0 :(得分:4)

使用value.size()代替strlen(value)

 char* buff; 
 size_t length = value.size();
 buff = new char[length+1]; 
 memcpy(buff, value.c_str() , length + 1); 
       //^^^^  ^^^^^^^^^^^ also note this

或者您也可以复制:

 std::string copy = value;
 const char * buff = copy.c_str();

但请注意,只要变量buff存在,copy就会存在。换句话说,buff的生命周期与变量copy的生命周期相关联,在这种情况下您无需编写delete buff

答案 1 :(得分:0)

为什么你还在使用memcpy?为了复制字符串,有strcpy:

char *c = new char[value.length() + 1];
strcpy(c, value.c_str());