[C++] 批量删除文件名多余的一个相同字符串

2024-09-04 06:58

本文主要是介绍[C++] 批量删除文件名多余的一个相同字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用C++方法:

// ++++++++

#include <string>
#include <io.h>
#include <iostream>
using namespace std;
bool change_name(const char* char_path,const char* char_del)
{string path="";string path_main="";string find_str="";path.append(char_path);find_str.append(char_del);cout<<"Now,you find file path is :"<<path.c_str()<<endl;path_main.append(path.c_str());path.append("/*.*");string path_old="";string path_new="";string file_name="";string find_result="";string temp_name="";string file_exe="";string file_pre="";_finddata_t file; bool bFind=false;bool bFile=false;long lf;  //输入文件夹路径  if((lf = _findfirst(path.c_str(), &file))==-1)  cout<<"Not Found!"<<endl;  else{  //输出文件名  cout<<"file name list:"<<endl;  while(_findnext( lf, &file)==0){  bFile =false;bFind =false;path_old="";path_new="";file_name="";find_result="";temp_name="";file_pre="";file_exe="";file_name.append(file.name);path_new.append(path_main.c_str());path_new.append("\\");if(file_name.find("..")!= string::npos){continue;}//cout<<file.name<<endl;  path_old.append(path_main.c_str());path_old.append("\\");path_old.append(file.name);//cout<<path_old.c_str()<<endl; int iPos_dot=0;iPos_dot =file_name.find_last_of(".");if(iPos_dot<=0){bFile =false;}else{bFile = true;}if(false == bFile){continue;}file_exe.append(file_name.substr(iPos_dot,file_name.length()));temp_name.append(file_name.substr(0,iPos_dot));int ilen = file_name.length();int ilen_find = temp_name.length() - find_str.length();if(temp_name.find(find_str) != string::npos){bFind=true;}if(ilen_find>0 && (true==bFind)){find_result.append(temp_name.substr(ilen_find,find_str.length()));file_pre.append(temp_name.substr(0,ilen_find));if(find_result.find(find_str.c_str())!= string::npos){//cout<<"\r\n find! \r\n"<<endl;path_new.append(file_pre.c_str());path_new.append(file_exe.c_str());cout<<"Old file"<<path_old.c_str()<<endl;cout<<"New file"<<path_new.c_str()<<endl;//check path_new if exist?int access_rs=0;access_rs = access(path_new.c_str(), 0) ;if(access_rs == 0)//if ((fopen(path_new.c_str(),"r"))!=0){cout<<"Files has existed!"<<path_new.c_str()<<endl;}else{rename(path_old.c_str(),path_new.c_str());}}}else{cout<<"Not find any file!"<<endl;}}  }  _findclose(lf);  //cin.get();return true; 
}void OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码CString sz_Path=_T("");CString sz_Del=_T("");GetDlgItemText(IDC_EDIT1,sz_Path);GetDlgItemText(IDC_EDIT2,sz_Del);string str_path="";str_path.append(sz_Path);cout<<str_path<<endl;string str_del="";str_del.append(sz_Del);change_name(str_path.c_str(),str_del.c_str());MessageBox("Successfully!",_T("title"),MB_OK);
}


//--------------

在VS2010上面测试没问题


这篇关于[C++] 批量删除文件名多余的一个相同字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135321

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

C# $字符串插值的使用

《C#$字符串插值的使用》本文介绍了C#中的字符串插值功能,详细介绍了使用$符号的实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录$ 字符使用方式创建内插字符串包含不同的数据类型控制内插表达式的格式控制内插表达式的对齐方式内插表达式中使用转义序列内插表达式中使用

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

linux批量替换文件内容的实现方式

《linux批量替换文件内容的实现方式》本文总结了Linux中批量替换文件内容的几种方法,包括使用sed替换文件夹内所有文件、单个文件内容及逐行字符串,强调使用反引号和绝对路径,并分享个人经验供参考... 目录一、linux批量替换文件内容 二、替换文件内所有匹配的字符串 三、替换每一行中全部str1为st

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自