C++ 檔案路徑中單斜槓“\”換成雙斜槓“\\”,雙斜槓“\\”換成單斜槓“\”
阿新 • • 發佈:2018-12-17
C++ 檔案路徑中單斜槓“\”換成雙斜槓“\”,雙斜槓“\”換成單斜槓“\” 1、單斜槓“\”換成雙斜槓“\”
//單斜槓轉雙斜槓
void pathConvert_Single2Double(string& s){
string::size_type pos = 0;
while ((pos = s.find('\\', pos)) != string::npos){
s.insert(pos, "\\");
pos = pos + 2;
}
}
2、雙斜槓“\”換成單斜槓“\” string 自帶的 find 函式 只能從起始位置開始找。 自己寫的 __find 函式 可以從 任意位置開始找指定字元,找到第一個指定字元,返回其所在位置。沒找到,則返回-1.
//從string s的位置pos開始,向後找,找到第一個等於x的位置返回其位置 //找到,返回找到的位置,找不到返回-1 int __find(const string s, const int start, const char x){ if (start >= s.length())return -1; for (int i = start; i < s.length(); ++i){ if (s[i] == x) return i; } return -1; } //雙斜槓轉單斜槓 void pathConvert_Double2Single(string& s){ int start = 0; while (start < s.length()){ int pos = __find(s, start, '\\');//從start位置開始找第一個 等於 單斜槓"\"的位置,返回為pos if (pos == -1)break; s.erase(pos, 1); start = pos + 1; } }
3、測試程式碼:
void test_pathConvert(){ cout << "----------測試 pathConvert----------" << endl; string s = "D:\\\\Files\\\\Codes\\\\C\\\\ex1.txt"; cout << s << endl; pathConvert_Double2Single(s);//雙斜槓 轉 單斜槓 cout << s << endl; pathConvert_Single2Double(s);//單斜槓 轉 雙斜槓 cout << s << endl; pathConvert_Double2Single(s); cout << s << endl; }