2016-07-23 79 views
0

我有一個名爲「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)' 

我藉此,因爲它不能使用的字符串作爲一個字符串。什麼? 基本上我試圖找到應用程序已經執行的路徑並將其複製到另一個地方。任何和所有的幫助表示讚賞。

+2

'std :: string'和'LPCSTR'是兩種完全不同的類型。編譯器的錯誤信息不能更清楚。你應該花一些時間研究'std :: string',一個C++類和C風格的字符串之間的區別,以及如何在兩者之間進行轉換。 –

+0

另外,'exepath'需要被稱爲'exepath.c_str()' –

回答

1

LPCSTR是一個長指針,一個常量字符串(const char *),string::c_str函數將返回相應的const char *string類。

所以第一個參數應爲exepath.c_str()

CopyFile(exepath.c_str(), "C:\\Example\\Example.exe", FALSE); 
相關問題