1. 程式人生 > >c++基礎:資料型別轉換及處理(二)檔案路徑擷取檔名

c++基礎:資料型別轉換及處理(二)檔案路徑擷取檔名

繼續昨天未寫完的...我是初學者,如果覺得太簡單,勿噴,如果有什麼錯誤之處,請指出,多謝~!

今天整理了寫的根據檔案路徑擷取檔名相關程式碼,主要包含替換路徑中的“/”為“'\”,然後根據“\”擷取最後的字串,即檔名

一、字串完全替換

以下方法可以替換掉所有的src,替換為dst

/**
 * 字串替換 將str中所有的src替換為dst
 */
void SlpcalHelper::string_replaceAll(std::string &str, const std::string &src, const std::string &dst)
{
    std::string::size_type pos = 0;
    std::string::size_type srclen = src.size();
    std::string::size_type dstlen = dst.size();

    while ((pos = str.find(src, pos)) != std::string::npos)
    {
        str.replace(pos, srclen, dst);
        pos += dstlen;
    }
}

獲取檔名

以下是獲取檔名

 // 先替換字串
string_replaceAll(strPath, "/", "\\");
// 獲取檔名
std::string tempFileName = strPath.substr(strPath.find_last_of("\\") + 1);

但是有時候,我們不需要檔案字尾,於是就有了以下程式碼:

std::string fileName= strPath.substr(strPath.find_last_of("\\") + 1, strPath.find_last_of(".")) ;

當然,中間的兩個位置自行先判斷大小,我這只是擷取最後一個“\”到最後一個“.”中間的字串,並未考慮異常情況。
原文:

簡書ThinkinLiu 部落格: IT老五

ps: 還碰到很多在java很容易做到的問題,c++需要一堆程式碼處理的基礎問題,慢慢整理中...
c++基礎:資料型別轉換及處理(一)string轉wstring及檔案拷貝