1. 程式人生 > >C++ 檔案路徑中單斜槓“\”換成雙斜槓“\\”,雙斜槓“\\”換成單斜槓“\”

C++ 檔案路徑中單斜槓“\”換成雙斜槓“\\”,雙斜槓“\\”換成單斜槓“\”

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

測試結果