相信程序员都有过这样的经历。
一些开源的C、C++代码库大多数是在linux下面开发的。为了能在windows下面用VS方便查看代码,可以利用VS根据已有代码来创建C++项目。简单步骤如下:
第一步:打开VS,点击“文件”菜单,在弹出菜单选择“新建”,最后选择“从现有代码创建项目”;
第二步:根据向导创建VC++项目,
找到已有代码的文件,添加进来
使用VS来生成项目,项目类型这里是控制台应用,最后点击完成就可以生成项目了。
最后生成的项目结构目录如下,一点层次结构都没有了:
第三步:自己写代码来实现自动建立目录结构,这里贴上自己写的代码:
#include <stdio.h>
#include "tinyxml/tinyxml.h"
#include <iostream>
#include <vector>
#include <set>
using namespace std;
#ifdef WIN32
//guid
#include <objbase.h>
#else
#include <uuid/uuid.h>
#endif
GUID CreateGuid()
{
GUID guid;
#ifdef WIN32
CoCreateGuid(&guid);
#else
uuid_generate(reinterpret_cast<unsigned char *>(&guid));
#endif
return guid;
}
std::string GuidToString(const GUID &guid)
{
char buf[64] = { 0 };
#ifdef __GNUC__
snprintf(
#else // MSVC
_snprintf_s(
#endif
buf,
sizeof(buf),
"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
guid.Data1, guid.Data2, guid.Data3,
guid.Data4[0], guid.Data4[1],
guid.Data4[2], guid.Data4[3],
guid.Data4[4], guid.Data4[5],
guid.Data4[6], guid.Data4[7]);
return std::string(buf);
}
void subDir(vector<string>& arr,string str,char sp)
{
arr.push_back(str);
for (size_t pos = str.find_last_of(sp); pos != string::npos; pos = str.find_last_of(sp))
{
str = str.substr(0, pos);
arr.push_back(str);
}
}
int main()
{
set<string> OldDirset;
set<string> NewDirset;
char tmp[256];
cout << "输入文件名!" << endl;
cin >> tmp;
string filepath = tmp;
TiXmlDocument doc(filepath.c_str());
bool b=doc.LoadFi