• 相对路径转绝对路径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;
    }
    

      

  • 相关阅读:
    思蕊防静电地板
    一个老站长的22条军规
    百度天天快照知识宝典
    搜索引擎常用搜索技巧
    网站运营工作流程
    关于线程间通信
    VS2012 EF5 连接oracle11.2
    ArcSde for Oracle服务注册
    NHibernate composite-id联合主键配置
    NHibernate 的 ID 标识选择器
  • 原文地址:https://www.cnblogs.com/cthon/p/9291555.html
Copyright © 2020-2023  润新知