[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、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除