[爆卦]dir副檔名是什麼?優點缺點精華區懶人包

為什麼這篇dir副檔名鄉民發文收入到精華區:因為在dir副檔名這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者hyhjcjy (翊玥)站內C_and_CPP標題[問題] 刪除字串特定符號時間Fri Jun ...


要讀入某個資料夾底下的所有檔案,然後作一些處理後存成同檔名的txt檔,
再取用這些txt檔到MATLAB作圖。

但是讀取檔名的時候都會包含副檔名例如 myfile.dex
存成新檔名就會變成 myfile.dex.txt。

=====================以下是大略的程式碼===========================

vector<string> files = vector<string>();
getfiles(dir, files);

for(unsigned int i=0; i<files.size(); i++){
string filename=files[i].c_str();
string filenameWithPath= dir+filename;

FILE *f_infile = fopen(filenameWithPath,"rb");

sprintf(filenameWithPath,"%s_proc.txt",filename.c_str());
FILE* f_stats = fopen(filenameWithPath,"wt");

doSomeProcess(f_infile,f_stats);

fclose(f_stats);
fclose(f_infile)

}

======================================================

可是這種myfile.dex.txt有好幾個"."的檔名在MATLAB處理上會發生一些問題,
所以想在一開始讀進來的檔名字串filename中把"."拿掉。

存成myfiledex.txt就好。


我查過可以使用erase,但是會當機。程式碼如下:

filename.erase(filename.end()-4); //倒數第四個字串後全部刪除

sprintf(filenameWithPath,"%s_proc.txt",filename.c_str());
FILE* f_stats = fopen(filenameWithPath,"wt");


就是只有加入有註解的那行而已。 預計可以刪除".dex"的部分。
Compile會過,Run會當機。
查了很久erase的使用,看不出是什麼問題,求幫助!!><"



--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.61.240.28
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1402041103.A.171.html
※ 編輯: hyhjcjy (61.61.240.28), 06/06/2014 15:54:16
Killercat:string::erase應該是傳回處理過的string而非自己erase 06/06 17:11
Killercat:自己吧?不過這種東西我會建議用cstyle string(char*) 06/06 17:11
Killercat:效率跟便捷程度會高一點 06/06 17:11
Killercat:所以先不管其他錯 你應該是a = a.erase(....) 06/06 17:12
Killercat:er.... 忘了我剛說的 我弄錯了 我跟java行為弄混了XD 06/06 17:14
legendmtg:是死在sprintf吧... filenameWithPath是string 06/06 19:04
legendmtg:不是c-style string 06/06 19:04
legendmtg:另外你的erase只有刪除倒數第四個 不是倒數第四以後 06/06 19:05
legendmtg:建議用boost::filesystem 可以直接處理副檔名... 06/06 19:05
noodleT:如果是要直接變更某資料夾底下的副檔名: 06/08 08:56
noodleT:CD C:/test 06/08 08:57
noodleT:REN *.dex *.txt 06/08 08:57
noodleT:可以試試看上面兩行(命令提示字元) 06/08 08:58

謝謝樓上幾位大大!!再來試試看!!
※ 編輯: hyhjcjy (61.61.240.28), 06/09/2014 12:04:43

你可能也想看看

搜尋相關網站