输出目录结构(路径打印)

来源:互联网 发布:html5小游戏源码 编辑:程序博客网 时间:2024/06/06 04:03

输出目录结构(路径打印)

  • 问题来源:
    题目1090:路径打印

思路:
把所有的文件提取出来,存在一个vector里,对其按要求排序输出即可。
这里写图片描述


代码如下:

#include <stdio.h>#include <string>#include <string.h>#include <vector>#include <algorithm>using namespace std;char str[55];vector<string> v;bool cmp(string a, string b){       //由于char数组不能这么排序,所以使用string    return a<b;}int main(int argc, const char * argv[]) {    int n;    while (scanf("%d", &n)!=EOF&&n!=0) {        v.resize(0);  //每次循环,需要把v置空        string s;        while (n--) {            scanf("%s", str);            s = str;            if (s[s.length()-1]=='\\') {     //去掉最后一个/,如aa\dd\cc\变为aa\dd\cc                s.erase(s.length()-1, s.length());            }            if(find(v.begin(), v.end(), s)==v.end()){  //如果v中没有该字符串,则把该字符串push到v中                v.push_back(s);            }            while (s.find('\\')!=string::npos) {                s.erase(s.find_last_of('\\'), s.length());  //删除最后一个\后面的字符。如 aa\dd\cc 变为aa\dd                if(find(v.begin(), v.end(), s)==v.end()){                    v.push_back(s);                }            }        }        sort(v.begin(), v.end(), cmp);        for(int i=0; i<v.size(); i++){            if(v[i].find('\\')==string::npos)  //如果字符串中没有\,直接输出                printf("%s\n", v[i].c_str());   //printf不能直接输出string类型,要 s.c_str()转化            else{                for(int j=0; j<=v[i].find_last_of('\\'); j++){  //最后一个\前的输出空格(包含\的位置,也输出空格)                    printf(" ");                }                string sub_string = v[i].substr(v[i].find_last_of('\\')+1, v[i].length()); //求字符串,的子串。如:aa\dd\cc变为:cc                printf("%s\n", sub_string.c_str());            }        }        printf("\n");    }    return 0;}
0 0
原创粉丝点击