C++没有split函数
但是有一个简单的方法,利用stringstream构建;
然后这道题就很简单啦 还要注意不能用cin 因为有空行的存在
1 #include <bits/stdc++.h> 2 using namespace std; 3 vector <string> f_cur,f_now; 4 int n; 5 vector <string> split (string str,const char flag='/') { 6 istringstream iss(str); 7 vector <string> ans; 8 while (getline(iss,str,flag)) { 9 if (str.size()) 10 ans.push_back(str); 11 } 12 return ans; 13 } 14 void _formal (vector <string>& ans, vector <string> f_now) { 15 for (int i=0;i<f_now.size();i++) { 16 if (f_now[i]==".") continue; 17 else if (f_now[i]==".."){ 18 if (ans.size()) 19 ans.pop_back(); 20 } 21 else ans.push_back(f_now[i]); 22 } 23 } 24 int main () 25 { 26 string str; 27 cin>>n>>str; getchar(); 28 f_cur=split(str); 29 while (n--) { 30 getline(cin,str); f_now=split(str); // 开始用cin 导致只有90 31 vector <string> ans; 32 if (str.size()&&str[0]=='/') _formal (ans,f_now); 33 else { 34 ans=f_cur; 35 _formal (ans,f_now); 36 } 37 if (ans.size()) { 38 for (int i=0;i<ans.size();i++) 39 cout<<"/"<<ans[i]; 40 cout<<"\n"; 41 } 42 else cout<<"/\n"; 43 } 44 return 0; 45 }