//寫一個函數,轉換相對路徑為絕對路徑,比如:/home/abs/../temp/new/../,輸出路徑為:/home/temp。int RP2AP(const char* pInStr, char* pOutStr){if (pInStr==NULL || pOutStr==NULL) return 0;string str = pInStr;string strTemp;vector<string> vec_str;string strOut="";int nPos1;int nPos2;nPos1 = str.find("/", 0);if (nPos1<0){return -1;}while(1){nPos2 = str.find("/", nPos1+1);if (nPos2>nPos1){strTemp = str.substr(nPos1, nPos2-nPos1);//如果不是/..,就放入vector裡if (strTemp!="/..")vec_str.push_back(strTemp);else//彈出上一個{vec_str.reserve(vec_str.size());vec_str.pop_back();vec_str.reserve(vec_str.size());}nPos1 = nPos2;}else{break;}}//迴圈賦值累加for (int i=0; i<vec_str.size(); i++){strOut +=vec_str[i];}//這裡用strOut.c_str(),要安全一些,有的環境不這樣寫編譯都不過。memcpy(pOutStr, strOut.c_str(), strOut.size());return 1;}int main() { int n = 10; //char a[] = "/home/abs/../temp/new/../";char a[] = "/home/abs/temp/new/../"; char b[256];memset(b, 0, 256);int nRet = RP2AP(a, b);if (nRet ==1 )cout << b << endl; system("pause"); return 0; }