90 std::vector<std::string> pathStack;
95 size_t cur =
path.find_first_of(
"/\\", prev);
96 if (cur == std::string::npos)
99 pathStack.push_back(
path.substr(prev));
103 part =
path.substr(prev, cur - prev);
107 if (!pathStack.empty())
109 pathStack.pop_back();
112 else if (part ==
".")
116 else if (part.empty())
118 if (pathStack.empty() && cur == 0)
121 pathStack.emplace_back();
131 pathStack.push_back(part);
140 for (i = 0; i < pathStack.size(); i++)
142 result += pathStack[i];
143 if (i < pathStack.size() - 1) {