我有
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);
但它仍然给我错误?你能告诉我我做错了什么吗?谢谢。
答案 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());