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;
}