寫這個文章是因為最近在做數據庫方面遇到了一個問題,如:定義一變量存儲文件路徑,string str= F:\\file\\test.avi,這里要寫雙斜杠,其中一個被當作轉義字符去掉了。當再把這個str寫到數據庫時,發現寫入的數據變成了str = F:filetest.avi。我暈,又去掉了
寫這個文章是因為最近在做數據庫方面遇到了一個問題,如:定義一變量存儲文件路徑,string str= “F:\\file\\test.avi”,這里要寫雙斜杠,其中一個被當作轉義字符去掉了。當再把這個str寫到數據庫時,發現寫入的數據變成了str = ‘F:filetest.avi’。我暈,又去掉了我一個’\’,當然讀取時得到的文件名字就錯了。
什么原因呢,我們將文件路徑讀取到字符串中會數據庫在存儲時去掉一個’\’,解決的方法一是那我在寫入數據庫時就多寫幾個斜杠進去,這樣做顯然是不合理的,因為你不知道這個數據會被寫到數據庫幾次,讀取幾次。
最終解決辦法:
在寫入數據庫時將’\\’替換為’/’,在讀取時再將’/’替換為’\\’,問題得解。以下是code
//將strPath中的str1替換為str string CMyFileInfo::string_replace(string &strPath,const string &str1,const string &str) { string::size_type pos=0; string::size_type a=str1.size(); string::size_type b=str.size(); while((pos=strPath.find(str1,pos))!=string::npos) { strPath.replace(pos,a,str); pos+=b; } return strPath; }
string str= “F:\\file\\test.avi”; string_replace(str,"\\","/");
讀取時執行:
str = string_replace(str,"/","\\");
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com