相對路徑轉絕對路徑C++實現


#include<iostream>
#include<string>
#include<vector>
using namespace std;
 
//相對路徑轉絕對路徑,vector實現 
//輸入路徑:/home/abs/../temp/new/../ ,輸出路徑為:/home/temp
 
vector<string> pathChange(string input){
	vector<string> inputpath,outputpath;
	string tmp;
	for(int i=0;i<input.size();i++){   //將input字符串按‘/’分開存儲到inputpath 
		if(input[i] != '/'){			//向量中。 注意:第一個為空字符串! 
			tmp+=input[i];
		}
		else{
			inputpath.push_back(tmp);
			tmp.clear();
		}
	}
	
	while(!inputpath.empty()){			//判斷vector最后一個數據是否為“..”,若 
		if(inputpath.back() != ".."){	//是,則連續2次刪除尾數據,若否,則將尾數 
			tmp = inputpath.back();		//據存到outputpath中,並刪除inputpath中的 
			outputpath.push_back(tmp);	//尾數據。 
			inputpath.pop_back();
		}
		else{
			inputpath.pop_back();
			inputpath.pop_back();
		}
	}
	
	while(!outputpath.empty()){					//將outputpath中的數據從尾到頭轉 
		inputpath.push_back(outputpath.back());	//存到inputpath中的從頭到尾中 
		outputpath.pop_back();
	}
	return inputpath;
}
 
int main(){
	string input = "/home/abs/../temp/new/../",output;
	vector<string> outputpath;
	cout<<"輸入相對路徑:"<<input<<endl;
	outputpath = pathChange(input);
	cout<<"輸出絕對路徑:"; 
	for(unsigned i=1;i<outputpath.size();i++)
		cout<<"/"<<outputpath.at(i);			//由上述函數可以outputpath首數據 
	cout<<endl;									//為空!  
	return 0;
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM