[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

相关文章

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a