为什么在我剪切字符串时 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
.
一起使用
我正在处理文件。目前我正在依次重命名一些我对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
.