String in LPCSTR umwandeln?
-
Hallo zusammen,
ich habe gerade erst angefangen mit c++ anzufreunden. Ich soll für ein Projekt ein Programm erstellen, welches einfach nur ein 2. Programm in einem Unterordner öffnet. Es soll mit relativen Pfaden funktionieren.
Ich habe mein Programm auch soweit fertig, dass es den aktuellen Pfad der exe findet und das dieser dann abgewandet wird.
#include <iostream> #include <windows.h> #include <string> #include <string.h> #include <conio.h> #include <tchar.h> using namespace std; int main () { char pfad[_MAX_PATH]; GetModuleFileName(NULL, pfad, _MAX_PATH); string neuerPfad = pfad; neuerPfad.replace(neuerPfad.find("Start_Ausbildungsportfolio.exe"),30,"portfolio_2a008_190310\\!start_portfolio.exe"); ShellExecute(NULL, "open", neuerPfad, NULL, NULL, SW_SHOWMAXIMIZED); cout << "Der Pfad ist:\n"; cout << pfad << "\n"; cout << "Neuer Pfad:\n"; cout << neuerPfad << "\n"; cout << "Druecken Sie eine beliebige Tasten zum Beenden..."; getchar(); }Das Problem ist jetzt wohl, dass ShellExecute() für den Pfad einen LPCSTR erwartet und neuerPfad ein String ist. Es kommt der Fehler:
error C2664: 'ShellExecuteA': Konvertierung des Parameters 3 von 'std::string' in 'LPCSTR' nicht möglichIch konnte bis dato aber nichts finden wie ich es umwandle. Hab ihr da eine Idee?
mfg
-
LPCSTR ist ein WinAPI-Alias für char const *. Das kannst du einem std::string so entlocken:
neuerPfad.c_str()
-
seldon schrieb:
LPCSTR ist ein WinAPI-Alias für char const *. Das kannst du einem std::string so entlocken:
neuerPfad.c_str()Ich danke dir es funktioniert.