首页 > 编程语言 >c++ 批量修改文件名

c++ 批量修改文件名

时间:2022-08-18 16:33:54浏览次数:47  
标签:std Documents wpx string 批量 文件名 c++ dir Users

在网上找了很久如何利用c++批量修改文件名,但是很不幸,找到的都不全,或者跑起来没效果。我就整合了以下批量修改文件名的代码(我跑完之后,文件名并没有改,好奇怪,你们可以试着找一下错误,我感觉没有错啊,为啥改不了。欢迎在评论区解惑)。

int rename_main(){
    std::vector<std::string> mesh_dir;
    std::vector<std::string> keypoint_dir;
    std::vector<std::string> obj_dir;
    std::string m = "/Users/wpx/Documents/data/nose_validata/mesh";
    std::string key = "/Users/wpx/Documents/data/nose_validata/keypoint";
    std::string o = "/Users/wpx/Documents/data/nose_validata/obj";
    std::string output_root = "/Users/wpx/Documents/data/nose_validata/output_obj";
    mesh_dir = getFilesList(m);
    keypoint_dir = getFilesList(key);
    obj_dir = getFilesList(o);
    for (int k=0; k<mesh_dir.size(); k++){
        std::string mesh_name     =  mesh_dir.at(k);
        std::string keypoint_name = keypoint_dir.at(k);
        std::string obj_name      = obj_dir.at(k);
        std::string keypoint_path = "/Users/wpx/Documents/data/nose_validata/keypoint/" + keypoint_name;
        std::string mesh_path     = "/Users/wpx/Documents/data/nose_validata/mesh/" + mesh_name;
        std::string obj_path     = o + "/" + obj_name;
        // 我需要删除文件名中的“_keypoint” 和文件名中的“_mesh”
        int pos_key = keypoint_path.find("_keypoint");  //找到 "_keypoint"位置下标,因为需要截断
        int pos_mesh = mesh_path.find("_mesh");  // 类似上面
        std::string sub_file_key = keypoint_path.substr(pos_key, 9);  // 从pos_key开始,数9个字符,因为_keypoint 是9个
        std::string sub_file_mesh = mesh_path.substr(pos_mesh, 5);  //同上
        // std::cout<<"pos:"<<sub_file_key<<std::endl;
        // std::cout<<"mesh:"<<sub_file_mesh<<std::endl;
        std::string new_key = keypoint_path.replace(pos_key, 9, "");  // 找到_keypoint之后,替换为空字符
        std::string new_mesh = mesh_path.replace(pos_mesh, 5, ""); // 同上
        std::cout<<new_key<<std::endl;
        if (!rename(keypoint_path.c_str(), new_key.c_str()))  // 之后利用c++中的rename方法,进行修改,结果修改错误,娘希匹,搞不定了。
        {
            std::cout << "rename success "<< std::endl;
        }
        else
        {
            std::cout << "rename error "<< std::endl;
        }

        if (!rename(mesh_path.c_str(), new_mesh.c_str()))
        {
            std::cout << "rename success "<< std::endl;
        }
        else
        {
            std::cout << "rename error "<< std::endl;
        }
    
    }
    return 0;
}

  

标签:std,Documents,wpx,string,批量,文件名,c++,dir,Users
From: https://www.cnblogs.com/peixu/p/16599169.html

相关文章

  • code::blocks 编辑标签(editor tab)路径太长问题,修改后只显示文件名
    code::blocks安装后有一个比较烦人的问题,就是打开文件都是显示相对路径,导致文件多了路径太长,文件之间不好切换。 修改前:   修改后:   解决方案:Setting-......
  • Linux c++ 试验-10 一例undefined reference to symbol 'pthread_create@@GLIBC_2.2.5
    最近在编写一个程序时(x64Linux,Arm下没有这个问题),出现了undefinedreferencetosymbol'pthread_create@@GLIBC_2.2.5'”,明明有设置-pthread(l60870里用到了这个库)。经过......
  • C++primer练习14.44-53
    练习14.44编写一个简单的桌面计算器使其处理二元计算doubleadd(doublea,doubleb){returna+b;}autosubtra=[](doublea,doubleb){returna-b;};stru......
  • VSCode运行C/C++配置
    将MinGw安装目录下的1、安装 VSCode2、安装 MinGW链接:点击跳转3、MinGW 内安装两个模块1.右键MarkforInstallation勾选(此处已安装好,所以是绿色实心)2.......
  • Effective C++ - 条款2 - in-class初值设定问题
    pre针对EffectiveC++(55条)中的每一个条款写一个blog。0x02尽量以const,enum,inline替换#define为什么需要这样做?因为使用define会使得变量被define的符号替换,在......
  • c++基本编程体验第3节之命名空间
    3.1、何为命名空间3.1.1、命名空间的引入(1)命名空间namespace,是c++引入的一种解决全局变量和函数名冲突机制(2)c语言没有namespace,但是c++及之后的javapy......
  • c++ 实现hashmap
    由于hashmap不是c++stl中标准实现,这样在跨平台使用时就可能会出现问题,于是想到自己实现一个hashmaphash算法使用开链法解决hash冲突,主要实现了添加,删除,查找几个方法头文......
  • C++primer练习14.26
    练习14.26为你的String类定义下标运算符char&operator[](size_td){returnelements[d];}constchar&operator[](size_td)const......
  • 批量插入时 java.sql.SQLSyntaxErrorException
    使用shardingspherebatchInsert批量插入时,单次插入300多条数据 ###Errorupdatingdatabase.Cause:java.sql.SQLSyntaxErrorException:Youhaveanerrorinyou......
  • 批量修改海康摄像头gb28181配置
    由于本人所在公司是物联网业务巨多,平时跟海康摄像头打交道比较多。同时,公司使用GB28181协议播放视频流。当摄像头多了,一个一个配置就比较麻烦了。同时海康的SDK(HCNetSDK......