工作過程中需要讀取指定資料夾下同型別檔案,並根據檔名最後幾位數字進行排序。當檔名全為數字時,直接根據數字就可進行排序,但是,如果檔名是含有非數字型變數(如abc _-
)時,就無法通過上述方法直接進行排序,讀取檔案時預設儲存在string
型別變數中,但是該變數通過最後幾位數字來進行排序。對winwows檔案排序功能有過了解,得知其將檔名轉化為二進位制進行排序,這種方法過於複雜。
檔名如下所示:
170818-1743-lm120_401.pcd
170818-1743-lm120_402.pcd
170818-1743-lm120_403.pcd
...170818-1743-lm120_4001.pcd
170818-1743-lm120_4002.pcd
...170818-1743-lm120_40001.pcd
首先讀取資料夾下同型別檔案:
read_filelists(const
std::string& dir_path,std::vector
& out_filelsits,std::string type)else}}
}
在進行排序時,如果直接對容器內string
進行排序會出現如下亂序版本:
170818-1743-lm120_401.pcd
170818-1743-lm120_4001.pcd
170818-1743-lm120_40001.pcd
...170818-1743-lm120_402.pcd
170818-1743-lm120_4002.pcd
...170818-1743-lm120_403.pcd
顯然不是我們需要的順序,出現這種情況,猜測是與string
型別的編碼特性有關,希望大神告知。
正確排序**:
bool computepairnum(std::pair pair1,std::pair pair2)
void sort_filelists(std::vector
& filists,std::string type)
std::sort(filelists_pair.begin(),filelists_pair.end(),computepairnum);
filists.clear();
for (int i = 0; i < filelists_pair.size(); ++i)
}
在函式sort_filelists
中,使用find_last_of("_")
函式找到最後乙個"_"
符號,並進行分割出來,這一步就是把string
型別檔名最後幾位數字對應索引到pair
中。之後就可用常規方法進行排序了!
以上。
讀取Windows資料夾下面檔名
在vs工程中新增lib檔名稱比較麻煩,通過 將需要的檔名儲存在txt檔案彙總 在網上找到了一段 修改一下成功執行!test max.cpp 定義控制台應用程式的入口點。include stdafx.h include include include include include include p...
讀取資料夾下的檔案,並且修改檔名
include include 整個標頭檔案可以幫忙讀取資料夾,find開頭的函式或型別名 include include 這個標頭檔案dos下的rename命令,必須使用rename命令,因為讀出的檔名為const型別,不能被修改 using namespace std int main find...
資料夾下的檔名路徑讀取(C )
在機器學習模型訓練前期,需要對資料 影象 文字等進行預處理,而如何快速生成資料的文字路徑呢?本文接下來直接使用c 實現文字路徑生成,可查詢固定格式如.jpg txt等檔案路徑 絕對路徑或檔名 然後儲存為.txt文字,方便後期資料讀取使用。include include include include...