Verzeichnis als string-Variable
-
Ich vermute mal, was du suchst ist das hier: http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197.aspx
-
Das sieht schon mal sehr vielversprechend aus!
aber wie kriege ich das in eine String-Variable rein?
-
So in der Art:
#include <iostream> #include <string> #include <windows.h> using namespace std; int main() { char buff[MAX_PATH]; if (GetModuleFileName(nullptr, buff, MAX_PATH)) { string filename = buff; cout << "Pfad: " << filename << endl; } return 0; }
-
Also bei mir spuckt er den Fehler "error C2065: 'nullptr': nichtdeklarierter Bezeichner" aus.
-
Dann mach 0 draus, dein Compiler unterstützt nullptr offenbar noch nicht...
-
Habe ich auch schon versucht. Dann spuckte er "error C2664: 'GetModuleFileNameW': Konvertierung des Parameters 2 von 'char [260]' in 'LPWCH' nicht möglich" aus.
P.S. Ich benutze Microsoft Visual C++ 2008 Expess Edition.
-
Benutz GetModuleFileNameA().
-
Danke! Es funktioniert!
-
Aber verstanden warum, hast Du nicht...
-
Bezüglich A und W Versionen der WinAPI Funktionen:
Mann sollte die A oder W Version nicht direkt benutzen, sondern die ohne Postfix. Es kann zu Problemen führen, wenn die Version der Funktion (A oder W) und das eingestellte Characterset nicht zusammenpassen.Folgende Optionen stehen zur Verfügung:
- Entweder generischer Code schreiben mit TCHAR etc.
- Oder Characterset entsprechend einstellen (beim Projekt)
- Oder an geigneter Stelle eine Konvertierung vornehmen (mit MultiByteToWideChar(..) bzw. WideCharToMultiByte(..) oder ähnlichen Funktionen).Simon