内容目录
将img_3.png这种文件格式化为img_003.png 或者img_0003.png的c++文件 使用的时候把c++放在与图片同目录下编译运行 方便进行动画编辑 相关参数见示例
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <string>
#include <io.h>
#include <direct.h>
#include <iomanip>
using namespace std ;
void getFiles( string path, vector<string> &files )
{
//文件句柄
long hFile = 0;
//文件信息
struct _finddata_t fileinfo;
string p;
if ((hFile = _findfirst(p.assign(path).append("/*").c_str(), &fileinfo)) != -1)
{
do
{
//如果是目录,迭代之
//如果不是,加入列表
if ((fileinfo.attrib & _A_SUBDIR))
{
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
getFiles( p.assign(path).append("/").append(fileinfo.name), files );
}
else
{
files.push_back( p.assign(path).append("/").append(fileinfo.name) );
}
}
while (_findnext( hFile, &fileinfo ) == 0);
_findclose(hFile);
}
}
string getnumName(char keychar,int size, string name)
{
int pos = name.find(keychar);
if (pos != string::npos)
{
string str = name.substr(pos + 1, name.rfind('.') - pos - 1);
if (str.length() < size)
{
int addnum = size - str.length();
for (int i = 0; i < addnum; i++)
{
str = '0' + str;
}
}
return name.substr(0, pos + 1) + str + name.substr(name.rfind('.'));
}
return name;
}
int main()
{
vector<string> files;
getFiles( ".", files );
for (int j = 0; j < files.size(); ++j)
{
rename(files[j].c_str(), getnumName('_',3, files[j]).c_str());
}
cout<<"格式化名称完成"<<endl;
return 0;
}
还有mac/linux版 要先给路径
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <string>
#include <dirent.h>
#include <iomanip>
using namespace std ;
void createDocList(string real_dir,std::vector<std::string> &doc_list)
{
int return_code;
DIR *dir;
struct dirent entry;
struct dirent *res;
if ((dir = opendir(real_dir.c_str())) != NULL) //打开目录
{
for (return_code = readdir_r(dir, &entry, &res); res != NULL && return_code == 0; return_code = readdir_r(dir, &entry, &res))
{
if (entry.d_type != DT_DIR) //存放到列表中
{
doc_list.push_back(string(entry.d_name));
}
}
closedir(dir);//关闭目录
}
}
string getnumName(char keychar, int size, string name)
{
int pos = name.find(keychar);
if (pos != string::npos)
{
string str = name.substr(pos + 1, name.rfind('.') - pos - 1);
if (str.length() < size)
{
int addnum = size - str.length();
for (int i = 0; i < addnum; i++)
{
str = '0' + str;
}
}
return name.substr(0, pos + 1) + str + name.substr(name.rfind('.'));
}
return name;
}
int main()
{
vector<string> files;
string dir="/Users/sky/Downloads/Graphic/";//后面记得加上/要不会崩
createDocList(dir,files);
for (int j = 0; j < files.size(); ++j)
{
// cout<<files[j]<<endl;
// cout<<dir+getnumName('_', 3, files[j])<<endl;
rename((dir+files[j]).c_str(), (dir+getnumName('_', 3, files[j])).c_str());
}
cout << "格式化名称完成" << endl;
return 0;
}
