"const char**"类型的参数与"const char*"类型的参数不兼容

Dam*_*ins 1 c++

我用这段代码得到了这个错误:

string folder;
getline(cin, folder);

string folder2 = folder + "/index.txt";
const char* oldhtml[] = { folder2.c_str() };
folder2 = folder + "/index.html";
const char* newhtml[] = { folder2.c_str()};
rename(oldhtml, newhtml);
Run Code Online (Sandbox Code Playgroud)

发生错误: rename(oldhtml, newhtml);

我是C++的新手.所以,如果这是一个简单的修复我道歉

M.M*_*M.M 12

看来你不明白这一行:

const char* oldhtml[] = { folder2.c_str() };
Run Code Online (Sandbox Code Playgroud)

这声明了一个长度为1的数组.数组元素是一个用结果初始化的指针folder2.c_str()(可能指向字符串的内部存储).

然而,您然后更改folder2下一行.这会使先前调用的结果无效c_str,因此oldhtml[0]现在是一个悬空指针.

编写此代码的更好方法是使用string所有方法:

string oldhtml = folder + "/index.txt";
string newhtml = folder + "/index.html";
rename(oldhtml.c_str(), newhtml.c_str());
Run Code Online (Sandbox Code Playgroud)