c++ - 一次重命名多个文件的 C++ 程序
问题描述
我有一个包含名为 Slide1、Slide2、Slide3 等的 JPG 文件的目录,我想将它们重命名为我在名为“names.txt”的 txt 文件中编写的名称列表。每个新名称都在一行上,所以基本上我需要逐行读取这个 txt 文件并将每一行设为 JPG 文件的新名称。我需要对多个目录执行此操作,但我希望每个目录最多只能包含 60 个 JPG(我将使用相同的 names.txt 文件来重命名每个目录中的 JPG,因为是否存在重复的 JPG 并不重要目录之间的名称,唯一重要的是同一目录中没有两个 JPG 具有相同的名称)。
这是我到目前为止的代码。我知道一个问题是 char oldname[] 和 char newname[] 不能使用 + 运算符。那么如何将每个 JPG 的 char oldname[] 设为 Slide1、Slide2 等?至于 char newname[],我想也许我需要将 names.txt 的每一行作为字符串读取,然后将该字符串转换为 char 并将其设置为 char newname[],但我不知道该怎么做。
#include <string>
#include <sstream>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int myNum;
cout << "How many slides are there? Max 60." << endl;
cin >> myNum;
if (myNum > 60)
cout << "Add more names to names.txt in lyrics folder, then rerun program." << endl;
if (myNum <= 60)
{
int nextNum = 1;
fstream readname;
readname.open("names.txt",ios::in);
if (readname.is_open())
{
string line;
while (getline(readname,line))
{
char oldname[] = "Slide" + nextNum + ".JPG";
char newname[] = line + ".JPG";
nextNum = nextNum++;
if (nextNum == myNum+1)
break;
}
readname.close();
}
}
return 0;
}
如果有人可以解释如何使用字符串而不是字符来执行此操作,那也很好。这不是一个任务,它只是一个个人项目,所以我可以使用的方法没有限制。
解决方案
从 C++11 开始,我们有一个函数std::to_string
,它接受一个数值并返回一个std::string
对象。更多信息,请访问https://en.cppreference.com/w/cpp/string/basic_string/to_string
使用它,您可以按如下方式转换代码(在 while 循环中):
std::string oldName = std::string("Slide") + std::to_string(nextNum) + ".JPG";
std::string newName = line + ".JPG";
希望这可以帮助,
谢谢
推荐阅读
- jquery - ASP.NET MVC 控制器的返回值字符串如何为空?
- asp.net-core - 如何在 ASP.NET Core 中自动触发电子邮件
- neo4j - 是否有与管道 (|) 类似的 & 符号?
- python - gspread 有没有办法在更新引用时复制粘贴公式?
- llvm - llvm 无需映射即可复制
- vue.js - 为什么 a-avatar 在 a-menu-item 内滑动一点
- azure-machine-learning-service - 如何在 AzureML Python SDK 中将 PipelineParameter 传递到 AutoMLStep
- android - 在侧抽屉导航器中动态添加新组件
- sql - 查询日期的总和以及日期之间的剩余
- c++ - 请发现它在开发中工作但在hackerrank中没有的错误