标签:c++
最近要用MFC开发一个界面,里面有一个需求就是生成一个与可执行文件(exe文件)同名的文件夹,比如我的可执行文件路径是D:\KFS\codes\22222\Release\22222.exe,我需要在D:\KFS\codes\22222\Release路径下生成一个22222的文件夹放东西。查阅了一点资料之后,成功了。之后写了一个小demo。下面上代码:
#include <windows.h> #include<iostream> #include<io.h> using namespace std; int main(){ char chpath[MAX_PATH]; GetModuleFileName(NULL, (LPSTR)chpath,sizeof(chpath)); //获取exe文件路径 cout<<chpath<<endl; int t; for(t=0;t<=sizeof(chpath);t++) { if(chpath[t]=='.') { break; } } char*create,*remove; create=new char[t+4]; remove=new char[t+4]; create[0]='m'; create[1]='d'; create[2]=' '; remove[0]='r'; remove[1]='d'; remove[2]=' '; cout<<"t = "<<t<<endl; cout<<sizeof(chpath)<<endl; int i ,j; for(i=0,j=3;i<=t;i++,j++) { cout<<chpath[i]; if(chpath[i]=='.') { break; } create[j]= chpath[i]; remove[j]= chpath[i]; } create[t+3]= '\0'; remove[t+3]= '\0'; cout<<endl; cout<<create<<endl; cout<<"remove "<<remove<<endl; if(_access(chpath,0)!=-1) system(remove);//删除文件夹 system(create);//创建文件夹 system("pause"); return 0; }代码很简单,需要注意的函数都注释了。还有一点就是在VS2010中,新建工程之后,编译出现一个错误
error C2664: “GetModuleFileNameW”: 不能将参数 2 从“LPSTR”转换为“LPWSTR” 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
是由于默认是 使用Unicode字符集 导致的。 解决方法是:右键--》属性--》配置数型--》常规--》字符集--》选择未设置--》确定。
结果图:
标签:c++
原文地址:http://blog.csdn.net/sunshihua12829/article/details/45850395