Probleme mit dem Ausführen eine Links in c++
-
Hi!
ich habe folgendes Problem:
Ich möchte einen Link in einem Browser öffnen der von mir erzeugte Variablen enthält:
die string variable: nr (enthält einen zufallswert)
und die string variable: wort(enthält ein zufallswort)string url= "http://test.de/test.php?ID="+nr+"&test="+wort;
Das klappt soweit
nun möchte ich den Link im Browser fenster öffnen:
ShellExecute(NULL, _T("open"),_T("http://test.de/test.php?ID=1234&test=foo") , NULL, NULL, SW_SHOW);
--> das funktioniert soweit alles
wenn ich jetzt aber den String übernehmen will gibt es probleme:
ShellExecute(NULL, _T("open"),url , NULL, NULL, SW_SHOW);
FEHLERMELDUNG:
error C2664: 'ShellExecuteW': Konvertierung des Parameters 3 von 'std::string' in 'LPCWSTR' nicht möglich
Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werdenSo funktioniert es ebenfalls nicht:
ShellExecute(NULL, _T("open"),_T("http://test.de/test.php?ID=nr&test=wort") , NULL, NULL, SW_SHOW);
Wahrscheinlich liegt das Problem darin dass die string variable zuerst noch irgendwie convertiert werden muss aber da bin ich im Moment wirklich überfordert
hoffe auf baldige Hilfe
-
Dein Projekt wird als Unicode Projekt kompiliert.
string basiert auf char. Also entweder std::string konvertieren oder gleich std::wstring verwenden. Oder eine entsprechende Konvertieren wie A2T!Versuche mal die Grundlagen und Unterschiede zu erlernen, was es bedeutet ein Projekt in Unicode oder MBCS zu erzeugen.
-
Könntest du mir ein Codebeispiel geben wie man die Variable am Besten codiert? Im Moment versteh ich nur Bahnhof
-
so wäre richtig:
//Unicode, das Makro _T voranschreiben CString nr = _T("1234"); CString wort = _T("foo"); CString url= _T("http://test.de/test.php?ID=") +nr+ _T("&test=") +wort;
Turmfalke64
-
mr_gentleman851 schrieb:
Könntest du mir ein Codebeispiel geben wie man die Variable am Besten codiert? Im Moment versteh ich nur Bahnhof
Dann solltest Du meine Hinweise ernst nehmen und lernen.
string url= "http://test.de/test.php?ID="+nr+"&test="+wort; ShellExecute(NULL, _T("open"),CA2T(url) , NULL, NULL, SW_SHOW);
Oder projekt eben auf MBCS umstellen, oder
string url= "http://test.de/test.php?ID="+nr+"&test="+wort; ShellExecuteA(NULL, _T("open"),url , NULL, NULL, SW_SHOW);
-
Nur so nebenbei: std::string hat keinen Extractor für "char const*" oder "wchar_t const*".
Es muss daher sowieso schonmal so heissen:ShellExecute(NULL, _T("open"), url.c_str(), NULL, NULL, SW_SHOW);
Und natürlich std::wstring statt std::string verwenden.
-
hustbaer schrieb:
Nur so nebenbei: std::string hat keinen Extractor für "char const*" oder "wchar_t const*".
Stimmt! Da war ich wohl etwas schnell...