ccf-路径解析201604-3

时间:2023-12-05 20:35:14

C++没有split函数

但是有一个简单的方法,利用stringstream构建;

然后这道题就很简单啦 还要注意不能用cin 因为有空行的存在

 #include <bits/stdc++.h>
using namespace std;
vector <string> f_cur,f_now;
int n;
vector <string> split (string str,const char flag='/') {
istringstream iss(str);
vector <string> ans;
while (getline(iss,str,flag)) {
if (str.size())
ans.push_back(str);
}
return ans;
}
void _formal (vector <string>& ans, vector <string> f_now) {
for (int i=;i<f_now.size();i++) {
if (f_now[i]==".") continue;
else if (f_now[i]==".."){
if (ans.size())
ans.pop_back();
}
else ans.push_back(f_now[i]);
}
}
int main ()
{
string str;
cin>>n>>str; getchar();
f_cur=split(str);
while (n--) {
getline(cin,str); f_now=split(str); // 开始用cin 导致只有90
vector <string> ans;
if (str.size()&&str[]=='/') _formal (ans,f_now);
else {
ans=f_cur;
_formal (ans,f_now);
}
if (ans.size()) {
for (int i=;i<ans.size();i++)
cout<<"/"<<ans[i];
cout<<"\n";
}
else cout<<"/\n";
}
return ;
}