寫這個(gè)文章是因?yàn)樽罱谧鰯?shù)據(jù)庫方面遇到了一個(gè)問題,如:定義一變量存儲文件路徑,string str= F:\\file\\test.avi,這里要寫雙斜杠,其中一個(gè)被當(dāng)作轉(zhuǎn)義字符去掉了。當(dāng)再把這個(gè)str寫到數(shù)據(jù)庫時(shí),發(fā)現(xiàn)寫入的數(shù)據(jù)變成了str = F:filetest.avi。我暈,又去掉了
寫這個(gè)文章是因?yàn)樽罱谧鰯?shù)據(jù)庫方面遇到了一個(gè)問題,如:定義一變量存儲文件路徑,string str= “F:\\file\\test.avi”,這里要寫雙斜杠,其中一個(gè)被當(dāng)作轉(zhuǎn)義字符去掉了。當(dāng)再把這個(gè)str寫到數(shù)據(jù)庫時(shí),發(fā)現(xiàn)寫入的數(shù)據(jù)變成了str = ‘F:filetest.avi’。我暈,又去掉了我一個(gè)’\’,當(dāng)然讀取時(shí)得到的文件名字就錯(cuò)了。
什么原因呢,我們將文件路徑讀取到字符串中會數(shù)據(jù)庫在存儲時(shí)去掉一個(gè)’\’,解決的方法一是那我在寫入數(shù)據(jù)庫時(shí)就多寫幾個(gè)斜杠進(jìn)去,這樣做顯然是不合理的,因?yàn)槟悴恢肋@個(gè)數(shù)據(jù)會被寫到數(shù)據(jù)庫幾次,讀取幾次。
最終解決辦法:
在寫入數(shù)據(jù)庫時(shí)將’\\’替換為’/’,在讀取時(shí)再將’/’替換為’\\’,問題得解。以下是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,"\\","/");
讀取時(shí)執(zhí)行:
str = string_replace(str,"/","\\");
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com