在我的项目中,有一个方法只返回一个const char*
,而我需要一个char*
字符串,因为API不接受const char*
。
你知道如何在const char*
到char*
之间转换吗?
发布于 2014-08-28 21:08:47
为了安全起见,您不要中断内容(例如,当这些字符串在您的代码或更高的代码中更改时),或者使您的程序崩溃(如果返回的字符串是文字,例如"hello I'm a literal string"
,并且您开始编辑它),请复制返回的字符串。
您可以使用strdup()
来完成此任务,但请阅读small print。当然,如果您的平台上没有自己的版本,您也可以创建自己的版本。
发布于 2014-08-28 21:07:15
首先,你应该只在真正有必要的时候做这样的事情--例如,使用一些带有char*
参数的老式API,这些参数没有被修改。如果API函数修改了最初为const的字符串,则这是未指明的行为,很可能会崩溃。
使用cast:
(char*)const_char_ptr
发布于 2014-08-28 21:11:57
您可以使用具有以下原型的strdup
函数
char *strdup(const char *s1);
使用示例:
#include <string.h>
char * my_str = strdup("My string literal!");
char * my_other_str = strdup(some_const_str);
或strcpy/strncpy到您的缓冲区
或者重写函数,尽可能使用const char *
而不是char *
作为参数,这样就可以保留const
https://stackoverflow.com/questions/25549562
复制相似问题