原题目如下:
给你一串路径,譬如
a\b\c
a\d\e
b\cst
d
你把这些路径中蕴涵的目录结构给画出来,子目录直接列在父目录下面,并比父目录向右

缩一格,就象这样
a
b
  c
d
  e
b
cst
d
同一级的需要按字母顺序排列,不能乱。

下面是我的代码:欢迎讨论(ps:附件中是代码文件)
#include <iostream>
#include 
<vector>
#include 
<string>
#include 
<algorithm>
using namespace std;

typedef vector
<string> strVec;

//比较函数
bool lessCmp(const strVec vec1, const strVec vec2)
{
    
for(int i = 0; i < vec1.size() && i < vec2.size(); i++)
    
{
        
if(vec1[i] < vec2[i])
            
return true;
        
else if(vec1[i] > vec2[i])
            
return false;
    }


    
return true;
}


int main()
{
    
int num = 0;
    cout 
<< "输入你所要输入的文件路径数目: ";
    cin 
>> num;
    vector
<strVec> inputVec;
    
//
    strVec pathtemp;

    cout 
<< "输入文件路径:\n";
    
for(int i = 0; i < num; i++)
    
{
        
string s;
        cin 
>> s;
        pathtemp.push_back(s);
    }



    
for(i = 0; i < pathtemp.size(); i++)
    
{
        
string text = pathtemp[i];
        
string::size_type pos = 0, pre_pos = 0;

        strVec nametemp;
        
while((pos = text.find_first_of('\\', pos)) != string::npos)
        
{
            nametemp.push_back(text.substr(pre_pos, pos 
- pre_pos));

            pre_pos 
= ++pos;
        }



        nametemp.push_back(text.substr(pre_pos, pos 
- pre_pos));
        inputVec.push_back(nametemp);
    }




    
//按顺序进行排序
    sort(inputVec.begin(), inputVec.end(), lessCmp);

    cout 
<< "按要求输入的文件目录树如下:\n";
    
if(!inputVec.empty())
    
{
        strVec nametemp 
= inputVec[0];
        
for(int num = 0; num < nametemp.size(); num++)
        
{
            
for(int j = 0; j < num; j++)
                cout 
<< " ";
            cout 
<< nametemp[num] << "\n";
        }

    }


    strVec pre 
= inputVec[0];

    
for(i = 1; i < inputVec.size(); i++)
    
{
        strVec nametemp 
= inputVec[i];
        
        
int cnt = 0;
        
while(cnt < pre.size() && cnt < nametemp.size())
        
{
            
if(pre[cnt] != nametemp[cnt])
                
break;
            cnt
++;
        }


        
for(int num = cnt; num < nametemp.size(); num++)
        
{
            
for(int j = 0; j < num; j++)
                cout 
<< " ";
            cout 
<< nametemp[num] << "\n";
        }


        pre 
= nametemp;
    }

}