我收到以下错误与此代码:
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);
错误发生于:
rename(oldhtml, newhtml);
我对C++相当陌生。所以,如果这是一个简单的解决方法,我深表歉意
最佳答案
看来您不明白这一行:
const char* oldhtml[] = { folder2.c_str() };
该数组声明一个长度为1的数组。array元素是一个指针,该指针使用
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());