如果const char *在函数调用中转换为char *,则可能出现任何问题

时间:2015-03-07 15:05:27

标签: c++ visual-c++

在fun1()中我得到一个字符串,我需要将此字符串数据传递给函数fun2(),该函数接受参数char *

function2原型如下

void fun2(char *p);

我从fun1调用fun2,如下所示

void fun1()
{
    fun2((char *)str.c_str());
}

从const char *到char *的转换是否有可能造成任何潜在的问题

1 个答案:

答案 0 :(得分:7)

如果fun2尝试修改const char*返回的std::string::c_str所指向的数据,则表明其未定义的行为。

如果fun2没有修改p指向的数据,那么就不会出现任何问题。 (但是,fun2应该声明为const char*,而不是char*。)