Problem bei String umwandlung
-
Hallo zusammen,
bekomme bei folgendem Code einen Fehler (siehe unten), und zwar in der Zeile
string str_file = szFileName;
.
// Path of executable TCHAR szFileName[MAX_PATH+1]; GetModuleFileName(NULL, szFileName, sizeof(szFileName) / sizeof(TCHAR)); string str_file = szFileName;
Fehlernachricht:
C:/Daten/cplusplus/qt/struktur/struktur/codeinteractive.cpp:29: error: conversion from 'TCHAR [261]' to non-scalar type 'std::string' requested
Hatte vormals sowas geschrieben:
string str_file = string(szFileName);
Nachdem ich Teile des Projektes in QT integriert habe, hats nicht mehr geklappt Woran mag das liegen? Unter Codeblocks hat es noch compiliert, ist beides gcc..
Vielen Dank
-
Was ist TCHAR bei dir?
-
@ Michael
Verstehe leider deine Frage nicht so recht. Wenn du meinst, ob das TCHAR UNICODE ist, dann ist die Antwort nein. Benötige es auch nur, um mit der Funktion GetModuleFileName den Pfad des Programmes herauszubekommen.Habe jetzt folgenden Code:
wchar_t *szFileName = new(wchar_t); *szFileName = szFileName[MAX_PATH+1]; GetModuleFileName(NULL, szFileName, sizeof(szFileName) / sizeof(wchar_t)); string str_filetest = szFileName; string str_file = str_filetest.c_str(); // find last \ and deliver path to str_path return str_file.substr(0,str_file.find_last_of("\\"));
Und folgende Fehlermeldung:
C:/Daten/cplusplus/qt/struktur/struktur/codebamfvpnrelayinteractive.cpp:41: error: conversion from 'wchar_t*' to non-scalar type 'std::string' requested
Und wenn ich statt
string str_filetest = szFileName;
folgendes schreibe
string str_filetest = string(szFileName);
erhalte ich diese Fehlermeldung:
C:/Daten/cplusplus/qt/struktur/struktur/projektname.cpp:42: error: no matching function for call to 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(wchar_t*&)'
btw: Warum ist im Beispiel von Jochen Kalmbach ( http://www.c-plusplus.net/forum/viewtopic-var-t-is-158666.html ) String großgeschrieben? Bei mir funktioniert die string Funktion und Datentyp nur, wenn sie kleingeschrieben werden. Bei Einbindung der gleichen Headerdateien!? Nachtrag: offensichtlich auch nicht immer...
-
2Random schrieb:
btw: Warum ist im Beispiel von Jochen Kalmbach ( http://www.c-plusplus.net/forum/viewtopic-var-t-is-158666.html ) String großgeschrieben? Bei mir funktioniert die string Funktion und Datentyp nur, wenn sie kleingeschrieben werden. Bei Einbindung der gleichen Headerdateien!? Nachtrag: offensichtlich auch nicht immer...
Das ist eine andere Klasse (System::String) einer anderen Programmiersprache (C++/CLI) und hat nichts mit std::string zu tun.
-
@Matze Danke dir. Habe mich seit längerem darüber gewundert...
Und die Umwandlung von wchar_t in string funktioniert nun auch
wchar_t szFileName[MAX_PATH] = L""; GetModuleFileName(NULL, szFileName, sizeof(szFileName) / sizeof(wchar_t)); // umwandeln in wstring wstring str_filetest = wstring(szFileName); // umwandeln von wstring in string // beruecksichtigt codepage nicht string str_file(str_filetest.begin(), str_filetest.end()); str_file.assign(str_filetest.begin(), str_filetest.end());