過濾Windows檔名中的非法字元

2022-05-04 19:09:32 字數 840 閱讀 5414

**:

場景:1. 通常生成檔案時需要乙個檔名,而生成檔名的方式可能是通過使用者輸入的字元,但是有些字元在windows上是不能作為檔名的,強行建立這類檔案會失敗。

2.一般可以通過正規表示式替換所有的非法字元,這裡實現的是c++98 template(模板)方式的替換無效字元,std::string,std::wstring. 基本上windows上和字串打交道都離不開wstring.

1 template

2void filterinvalidfilenamechar(t&str)322

}23}

1 inline char* unicode2ansi(const wchar_t*unicode)    

2

呼叫:

1 std::wstring wss(l"

/asfasdf中國asdfas*dfa.txt");

2filterinvalidfilenamechar(wss);

3 cout << unicode2ansi(wss.c_str()) <

45 std::string ss("

/asfasdf\\asdfas*dfa.txt");

6filterinvalidfilenamechar(ss);

7 cout << ss.c_str() << endl;

輸出:

_asfasdf中國asdfas_dfa.txt

_asfasdf_asdfas_dfa.txt

view code

檔名的過濾器

判斷某個目錄下是否是某種檔案型別的另外一種思路 在存進陣列之前就先判斷好 這就需要用到檔名過濾器 方法 public string list filenamefilter filter public file listfiles filenamefilter filter filenamefilte...

windows批量修改檔名或去掉檔名中的字串

複製下面 到乙個txt文字中,將字尾名修改為bat,雙擊執行即可。操作方式如下圖 這裡我去掉了新建兩個字。注意編碼問題,如果開啟是亂碼,請先檢視cmd的屬性,然後將文字儲存為對應字元編碼。複製下方 echo off set p str1 請輸入要替換的檔案 資料夾 名字串 可替換空格 set p s...

檔名過濾器 檔案過濾器

ublic class filenamefileerdemo implements filenamefilter return false implements filenamefilter 必須繼承implements public string list 將目錄下的子目錄及檔案的名字,返回到st...