如果在函数调用中将 const char * 转换为 char * 可能出现的任何问题
Any possible issues if const char * is converted to char * in a function call
在 fun1() 中,我得到了一个字符串,我需要将此字符串数据传递给函数 fun2(),该函数采用参数 char *
function2原型如下
void fun2(char *p);
我正在从 fun1 调用 fun2,如下所示
void fun1()
{
fun2((char *)str.c_str());
}
从 const char * 到 char * 的转换是否有可能产生任何潜在问题
如果 fun2
试图修改 std::string::c_str
返回的 const char*
指向的数据,那么它是未定义的行为。
如果fun2
不修改p
指向的数据,就没有问题。 (但是 fun2
应该声明为采用 const char*
,而不是 char*
。)
在 fun1() 中,我得到了一个字符串,我需要将此字符串数据传递给函数 fun2(),该函数采用参数 char *
function2原型如下
void fun2(char *p);
我正在从 fun1 调用 fun2,如下所示
void fun1()
{
fun2((char *)str.c_str());
}
从 const char * 到 char * 的转换是否有可能产生任何潜在问题
如果 fun2
试图修改 std::string::c_str
返回的 const char*
指向的数据,那么它是未定义的行为。
如果fun2
不修改p
指向的数据,就没有问题。 (但是 fun2
应该声明为采用 const char*
,而不是 char*
。)