如果在函数调用中将 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*。)