问题描述
我正在处理文件。目前,我正在重命名一些我对fstream有点了解的文件。我只想使用循环顺序重命名多个文件。为什么此代码不起作用?还有其他方法吗?我只想做我的工作。感谢您阅读
#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样式字符串,如下所示:
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
一起使用。