ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c++ 批量修改文件名

2022-08-18 16:31:01  阅读:168  来源: 互联网

标签: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
来源: https://www.cnblogs.com/peixu/p/16599169.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有