2016-07-23 7 views
0

Ich habe eine Funktion namens „ExePath“Wie Anwendung Dateipfad als String C++

string exepath() 
{ 
char buffer[MAX_PATH]; 
GetModuleFileName(NULL, buffer, MAX_PATH); 
return std::string(buffer); 
} 

Dies gibt den Pfad der Anwendung zu bekommen. Später versuche ich, die Anwendung an einen anderen Ort zu kopieren.

CopyFile(exepath, "C:\\Example\\Example.exe", FALSE); 

Beim Kompilieren bekomme ich folgende Fehlermeldung:

[Error] cannot convert 'std::string' to 'LPCSTR' for argument '1' to 'WINBOOL CopyFileA(LPCSTR, LPCSTR, WINBOOL)' 

ich das nehmen, wie es die Zeichenfolge als Zeichenfolge verwenden kann nicht. Was? Grundsätzlich versuche ich den Pfad zu finden, in dem die Anwendung ausgeführt wurde, und kopiere sie an einen anderen Ort. Jede und jede Hilfe wird geschätzt.

+2

'std :: string' und' LPCSTR' sind zwei völlig verschiedene Typen. Die Fehlermeldung des Compilers könnte nicht klarer sein. Sie sollten einige Zeit damit verbringen, den Unterschied zwischen 'std :: string ', einer C++ - Klasse und C-artigen Strings zu untersuchen und zu erfahren, wie Sie zwischen den beiden Strings konvertieren können. –

+0

auch, 'exepath' muss als' exepath.c_str() 'aufgerufen werden –

Antwort

1

LPCSTR ein langer Zeiger auf ein Const STRing ist (const char *) wird string::c_str Funktion der entsprechenden const char * zu Ihrer string Klasse zurück. Der erste Parameter sollte exepath.c_str() sein.

CopyFile(exepath.c_str(), "C:\\Example\\Example.exe", FALSE);