如何获得应用程序文件路径字符串C++
问题描述:
我有一个名为“ExePath”如何获得应用程序文件路径字符串C++
string exepath()
{
char buffer[MAX_PATH];
GetModuleFileName(NULL, buffer, MAX_PATH);
return std::string(buffer);
}
这将返回应用程序的路径功能。后来,我尝试将应用程序复制到另一个地方。
CopyFile(exepath, "C:\\Example\\Example.exe", FALSE);
编译时,我得到以下错误:
[Error] cannot convert 'std::string' to 'LPCSTR' for argument '1' to 'WINBOOL CopyFileA(LPCSTR, LPCSTR, WINBOOL)'
我借此,因为它不能使用的字符串作为一个字符串。什么? 基本上我试图找到应用程序已经执行的路径并将其复制到另一个地方。任何和所有的帮助表示赞赏。
答
LPCSTR
是一个长指针,一个常量字符串(const char *
),string::c_str
函数将返回相应的const char *
您string
类。
所以第一个参数应为exepath.c_str()
。
CopyFile(exepath.c_str(), "C:\\Example\\Example.exe", FALSE);
'std :: string'和'LPCSTR'是两种完全不同的类型。编译器的错误信息不能更清楚。你应该花一些时间研究'std :: string',一个C++类和C风格的字符串之间的区别,以及如何在两者之间进行转换。 –
另外,'exepath'需要被称为'exepath.c_str()' –