[問題] 刪除字串特定符號

看板C_and_CPP (C/C++)作者 (翊玥)時間11年前 (2014/06/06 15:51), 11年前編輯推噓3(3010)
留言13則, 3人參與, 最新討論串1/1
要讀入某個資料夾底下的所有檔案,然後作一些處理後存成同檔名的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

06/06 17:11, , 1F
string::erase應該是傳回處理過的string而非自己erase
06/06 17:11, 1F

06/06 17:11, , 2F
自己吧?不過這種東西我會建議用cstyle string(char*)
06/06 17:11, 2F

06/06 17:11, , 3F
效率跟便捷程度會高一點
06/06 17:11, 3F

06/06 17:12, , 4F
所以先不管其他錯 你應該是a = a.erase(....)
06/06 17:12, 4F

06/06 17:14, , 5F
er.... 忘了我剛說的 我弄錯了 我跟java行為弄混了XD
06/06 17:14, 5F

06/06 19:04, , 6F
是死在sprintf吧... filenameWithPath是string
06/06 19:04, 6F

06/06 19:04, , 7F
不是c-style string
06/06 19:04, 7F

06/06 19:05, , 8F
另外你的erase只有刪除倒數第四個 不是倒數第四以後
06/06 19:05, 8F

06/06 19:05, , 9F
建議用boost::filesystem 可以直接處理副檔名...
06/06 19:05, 9F

06/08 08:56, , 10F
如果是要直接變更某資料夾底下的副檔名:
06/08 08:56, 10F

06/08 08:57, , 11F
CD C:/test
06/08 08:57, 11F

06/08 08:57, , 12F
REN *.dex *.txt
06/08 08:57, 12F

06/08 08:58, , 13F
可以試試看上面兩行(命令提示字元)
06/08 08:58, 13F
謝謝樓上幾位大大!!再來試試看!! ※ 編輯: hyhjcjy (61.61.240.28), 06/09/2014 12:04:43
文章代碼(AID): #1JaNCF5n (C_and_CPP)
文章代碼(AID): #1JaNCF5n (C_and_CPP)