在fun1()中我得到一个字符串,我需要将此字符串数据传递给函数fun2(),该函数接受参数char *
function2原型如下
void fun2(char *p);
我从fun1调用fun2,如下所示
void fun1()
{
fun2((char *)str.c_str());
}
从const char *到char *的转换是否有可能造成任何潜在的问题
答案 0 :(得分:7)
如果fun2
尝试修改const char*
返回的std::string::c_str
所指向的数据,则表明其未定义的行为。
如果fun2
没有修改p
指向的数据,那么就不会出现任何问题。 (但是,fun2
应该声明为const char*
,而不是char*
。)