求助,字符串编辑,修改文件名
修改文件名,好麻烦呀。。。网上下载的视频,第一次下载6集,文件名中‘:’冒号是全角, '('括号是半角。
第二次下载8集,文件名中‘:’冒号是全角, '('括号是全角。
全角和半角,在char[ ]数组中是不同的。
string.rfind(''); 可以查找半角标点符号的位置,如何查找全角标点符号的位置?
写程序,折腾了半天,功能实现了。。。
程序,改的面目全非,惨不忍睹,自己都不忍心看了。。。
求大神,帮我修改一下。。。
多使用,字符串库函数,简化一下代码。。。。
下载的原文件名如下
空中浩劫第一季(国语配音) - 1.空中浩劫S01E01:联合航空811号班机(国语配音无字幕)(Av802929849,P1).mp4
空中浩劫第一季(国语配音) - 2.空中浩劫S01E02:美国航空1420号班机(国语配音无字幕)(Av802929849,P2).mp4
空中浩劫第一季(国语配音) - 3.空中浩劫S01E03:瑞士航空111号班机(国语配音无字幕)(Av802929849,P3).mp4
空中浩劫第一季(国语配音) - 4.空中浩劫S01E04:秘鲁航空603号班机(国语配音无字幕)(Av802929849,P4).mp4
空中浩劫第一季(国语配音) - 5.空中浩劫S01E05:阿拉斯加航空261号班机(国语配音无字幕)(Av802929849,P5).mp4
空中浩劫第一季(国语配音) - 6.空中浩劫S01E06:越洋航空236号班机(国语配音无字幕)(Av802929849,P6).mp4
空中浩劫系列(国语配音)2 - 2.空中浩劫S03E06:伊朗航空655号班机(国语配音)(Av467940195,P2).mp4
空中浩劫系列(国语配音)2 - 3.空中浩劫S03E08:埃及航空990号班机(国语配音)(Av467940195,P3).mp4
空中浩劫系列(国语配音)2 - 4.空中浩劫S04E07:墨西哥国际航空498号班机(国语配音)(Av467940195,P4).mp4
空中浩劫系列(国语配音)2 - 5.空中浩劫S11E01:巴西天马航空3054号班机(国语配音)(Av467940195,P5).mp4
空中浩劫系列(国语配音)2 - 6.空中浩劫S11E02:西加勒比海航空708号班机(国语配音)(Av467940195,P6).mp4
空中浩劫系列(国语配音)2 - 7.空中浩劫S11E09:尼日利亚航空2120号班机(国语配音)(Av467940195,P7).mp4
空中浩劫系列(国语配音)2 - 8.空中浩劫S11E10:太平洋西南航空1771号班机(国语配音)(Av467940195,P8).mp4
空中浩劫系列(国语配音)2 - 9.空中浩劫S11E13:美国联合航空232号班机(国语配音)(Av467940195,P9).mp4
修改后文件名如下
联合航空811号班机.mp4
美国航空1420号班机.mp4
瑞士航空111号班机.mp4
秘鲁航空603号班机.mp4
阿拉斯加航空261号班机.mp4
越洋航空236号班机.mp4
伊朗航空655号班机.mp4
埃及航空990号班机.mp4
墨西哥国际航空498号班机.mp4
巴西天马航空3054号班机.mp4
西加勒比海航空708号班机.mp4
尼日利亚航空2120号班机.mp4
太平洋西南航空1771号班机.mp4
美国联合航空232号班机.mp4
程序代码:
#include<iostream> #include<io.h> #include<string> using namespace std; void changeFileName(string path) { char exte[5] = ".mp4"; //文件扩展名 _finddata_t findData; intptr_t handle = _findfirst(path.c_str(), &findData); //查找目录中的第一个文件 if(handle == -1) throw exception("Error"); do { char oldname[260] = {0}; char newname[260] = {0}; int j=0; strcpy(oldname, findData.name); for(j=0; j<128; j++) { if(oldname[j] == '-') //原文件名中都有‘-’,防止文件改名后,再次被读入进行改名。。。 break; } if(j >= 128) continue; int i=0; while(!(oldname[i] == -93 && oldname[i+1] == -70)) i++; i += 2; int start = i; for(; i<260; i++) { if(oldname[i] == 40||(oldname[i]== -93 && oldname[i+1] == -88)) break; newname[i-start] = oldname[i]; } strcat(newname,exte); //添加文件扩展名 .mp4 char old[512] = "C:\\Users\\Administrator\\Desktop\\[WPF]JJDown\\Download\\"; char nwe[512] = "C:\\Users\\Administrator\\Desktop\\[WPF]JJDown\\Download\\"; strcat(old, oldname); strcat(nwe, newname); rename(old, nwe); }while(_findnext(handle, &findData) == 0); //找到目录中下一个文件 _findclose(handle); } int main() { string path = "C:\\Users\\Administrator\\Desktop\\[WPF]JJDown\\Download\\*.mp4"; changeFileName(path); return 0; }
源代码文件
main.rar
(806 Bytes)
完整项目
rename.rar
(1.35 MB)