您的位置:首页 > 其它

getline(ss, temp, '/')示例

2016-04-02 16:17 197 查看
Given an absolute path for a file (Unix-style), simplify it.

For example,
path = 
"/home/"
, => 
"/home"

path = 
"/a/./b/../../c/"
, => 
"/c"


click to show corner cases.

Corner Cases:

Did you consider the case where path = 
"/../"
?

In this case, you should return 
"/"
.
Another corner case is the path might contain multiple slashes 
'/'
 together,
such as 
"/home//foo/"
.

In this case, you should ignore redundant slashes and return 
"/home/foo"
.

string simplifyPath(string path) {
string res, temp;
vector<string> stk;
stringstream ss(path);
while (getline(ss, temp, '/')) {
if (temp == "." || temp == "") continue;
else if (temp == ".."&&!stk.empty()) stk.pop_back();
else if(temp!="..") stk.push_back(temp);
}
for (auto str : stk) res += "/" + str;
return res.empty() ? "/" : res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: