为什么在我剪切字符串时 rename() 函数不起作用?

Why rename() function not working when I cut strings?

我正在处理文件。目前我正在依次重命名一些我对fstream略有了解的文件。我只是想用 loop.Why 顺序重命名多个文件这个代码不起作用?还有其他办法吗?我只想完成我的工作。感谢您阅读 <3

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{

// not working
for(int i=1;i<=20;i++;){
 
 rename(("oldname"+to_string(i)+"txt"),((newname+to_string(i)+"txt"));



}
    
return 0;
}

std::rename 有两个 const char * 类型的参数。但是字符串拼接的结果是std::string。您可以使用 .c_str() 访问基础 C-style-string ,如下所示:

auto oldFileName = "oldname" + to_string(i) + "txt";
auto newFileName = newname + to_string(i) + "txt";

rename(oldFileName.c_str(), newFileName.c_str());

但它可以变得比这更容易: rename 是 C 的遗留物。在 C++ 中你应该使用 std::filesystem::rename(如果你可以使用 C ++17).一个优点是,in 可以与 std::string.

一起使用