如何将一个std::string转换为const char*或char*?

1071

如何将 std::string 转换为 char*const char*


2
你可以使用 char writable[str.size() + 1]; 代替 char * writable = new char[str.size() + 1]; 这样你就不需要担心删除writable或异常处理。 - user372024
12
如果在编译时无法确定大小,你就不能使用str.size(),而且如果固定大小的值太大,可能会导致堆栈溢出。请注意不要改变原意。 - paulm
1
char* result = strcpy((char*)malloc(str.length()+1), str.c_str());将字符串复制到新分配的内存中,并返回指向该内存的指针。 - cegprakash
9
strcpy和malloc并不是C ++的常用方式。 - boycy
8
不,但是char* dest = new char[str.length() + 1]; std::copy(str.begin(), str.end(), dest)会更符合C++的惯用方法。使用strcpy()malloc()并没有错或问题,但在同一段代码块中使用C++字符串和C库函数以及等价的C++函数看起来不太一致。 - boycy
显示剩余2条评论
11个回答

-4

试试这个

std::string s(reinterpret_cast<const char *>(Data), Size);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接