0
点赞
收藏
分享

微信扫一扫

批量重命名文件

修炼之士 2022-07-14 阅读 118

前言

实现代码的过程中经常需要将文件夹中的所有文件进行重命名,以方便对文件进行处理。

实现过程

1.测试代码;

批量重命名文件_c++

批量重命名文件_#include_02

/************************************************************************
* Copyright(c) 2017 AMY
* All rights reserved.
*
* File:
* Brief:
* Version: 1.0
* Author:
* Email: happyamyhope@163.com
* Date: 2017/10/27
* History:
* 20171027: ;

************************************************************************/
//-------------------------------------------------------------------------
#include <iostream>
#include <string>
#include <vector>
#include "opencv2/opencv.hpp"
#include "opencv2/contrib/contrib.hpp"
using namespace std;

int main()
{
string oldFolder = "E:\\fatigue_detection\\dataset\\img\\";
string oldType = "*.jpg";
bool addPath = true;
cv::Directory dir;
vector<string> filenames = dir.GetListFiles(oldFolder, oldType, addPath);
string newName;
string oldName;
string newType = ".png";
for (int i = 0; i < filenames.size(); i++)
{
oldName = filenames[i];
newName = oldFolder + to_string(i) + newType;
////method1
//char *oldNamePointer, *newNamePointer;
//oldNamePointer = (char *)malloc((oldName.size() + 1) * sizeof(char));
//newNamePointer = (char *)malloc((newName.size() + 1) * sizeof(char));
//strcpy(oldNamePointer, oldName.c_str());
//strcpy(newNamePointer, newName.c_str());

//rename(oldNamePointer, newNamePointer);
//free(oldNamePointer);
//free(newNamePointer);

////method2
char* oldNamePointer = new char[(oldName.size() + 1) * sizeof(char)];
char* newNamePointer = new char[(oldName.size() + 1) * sizeof(char)];
strcpy(oldNamePointer, oldName.c_str());
strcpy(newNamePointer, newName.c_str());

rename(oldNamePointer, newNamePointer);
delete [] oldNamePointer;
delete [] newNamePointer;
}

return 0;

}

View Code

注意,不同类型之间的转换,比如char*和string、const char*和string等.

2.c++中new和delete的使用;

2.1)针对实体:

type_name * point_name = new type_name;
delete

注意,只能使用delete来释放使用new分配的内存;使用delete的关键在于只用于new分配的内存即new的地址.

2.2)针对动态数组:

type_name * point_name = new type_name [num_elements];
delete

注意,数组使用的是方括号[];

2.3)使用new和delete应遵守的规则:

  • 不要使用delete来释放不是new分配的内存;
  • 不要使用delete释放同一个内存块两次;
  • 如果使用new [] 为数组分配内存,则应使用delete [] 来释放;
  • 如果使用new为一个实体分配内存,则应使用delete(没有方括号)来释放;
  • 对空指针使用delete是安全的;

参考

1.​​here​​

2.书籍:c++ Primer Plus.

举报

相关推荐

0 条评论