我用这段代码得到了这个错误:
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)
| 归档时间: |
|
| 查看次数: |
5315 次 |
| 最近记录: |