如何获取当前运行的.exe所在路径的双斜线形式?---利用GetModuleFileName
2014-11-28 23:42
686 查看
先来看一个简单的程序:
但是, 你要是在程序中利用上述路劲, 就不行了, 因为\在C语言中是转义字符, 下面我们看看 :
而下面程序是ok的:
我们继续来看:
不要奇怪, \是转义符号, \\才表示一个\, 所以, 下面代码是错误的:
根据上面的讨论, 我们回到正题, 获取当前路径的代码为:
总之, 理解了转义符号, 一切都简单。
#include <windows.h> #include <iostream> using namespace std; int main() { char szBuf[1025] = {0}; GetModuleFileName(NULL, szBuf, sizeof(szBuf)); cout << szBuf << endl; // C:\Documents and Settings\Administrator\桌面\cpp\test\Debug\test.exe return 0; }
但是, 你要是在程序中利用上述路劲, 就不行了, 因为\在C语言中是转义字符, 下面我们看看 :
#include <fstream> using namespace std; int main() { ofstream outFile("C:\Documents and Settings\Administrator\桌面\MYCPP\test.txt"); // 不会生成test.txt文件 outFile << "hello world" << endl; return 0; }
而下面程序是ok的:
#include <fstream> using namespace std; int main() { ofstream outFile("C:\\Documents and Settings\\Administrator\\桌面\\MYCPP\test.txt"); // 会生成test.txt文件 outFile << "hello world" << endl; return 0; }
我们继续来看:
#include <windows.h> #include <iostream> using namespace std; int main() { char szBuf[1025] = {0}; GetModuleFileName(NULL, szBuf, sizeof(szBuf)); cout << szBuf << endl; // C:\Documents and Settings\Administrator\桌面\cpp\test\Debug\test.exe if(0 == strcmp(szBuf, "C:\\Documents and Settings\\Administrator\\桌面\\cpp\\test\\Debug\\test.exe")) { cout << "yes" << endl; // yes } else { cout << "no" << endl; } return 0; }
不要奇怪, \是转义符号, \\才表示一个\, 所以, 下面代码是错误的:
int main() { char c = '\'; // error return 0; }
根据上面的讨论, 我们回到正题, 获取当前路径的代码为:
#include <windows.h> #include <iostream> #include <fstream> using namespace std; int main() { char szBuf[1025] = {0}; GetModuleFileName(NULL, szBuf, sizeof(szBuf)); char *p = strrchr(szBuf, '\\'); *p = '\0'; strcat(szBuf, "\\test.txt"); // 强调一下, strcat非常不安全 cout << szBuf << endl; // 本身是双斜线的, 输出显示的是单斜线的 ofstream outFile(szBuf); // 会生成test.txt文件 outFile << "hello world" << endl; return 0; }
总之, 理解了转义符号, 一切都简单。
相关文章推荐
- 使用GetModuleFileName()获取当前.exe所在绝对路径,并且读取.ini配置文件
- 利用 GetModuleFileName获取exe文件路径,,以显示bmp, jpg, png图片
- VC新建目录CreateDirectory、得到exe存放路径GetModuleFileName、获取当前目录GetCurrentDirectory、CFileDialog设置打开默认路径
- 获取当前进程目录 GetCurrentDirectory() 及 获取当前运行模块路径名GetModuleFileName()
- VC新建目录CreateDirectory、得到exe存放路径GetModuleFileName、获取当前目录GetCurrentDirectory、CFileDialog设置打开默认路径
- GetModuleFileName函数当前运行exe或dll的路径
- GetModuleFileName 获取当前程序可执行文件所在目录
- 如何获取启动文件路径 GetModuleFileName
- C++ 获取当前项目Debug中文件的路径(GetModuleFileName())
- 使用GetModuleFileName函数获取当前程序所在目录
- GetModuleFileName获取当前进程已加载模块的文件的完整路径
- GetModuleFileName获取当前进程完整路径
- 使用GetModuleFileName函数获取当前程序所在目录
- 用GetModuleFileName获取程序当前执行路径
- GetModuleFileName()函数的返回值来获取当前的工作路径
- VC中使用GetModuleFileName获取应用程序路径 转帖
- MFC获取路径的两个函数GetCurrentDirectory()和GetModuleFileName()
- 十一:VC中使用GetModuleFileName获取应用程序路径
- GetModuleFileName函数得到当前应用程序路径
- 获取程序当前执行文件名-GetModuleFileName的用法