String Format und ShellExecute

Shooter2k

Erfahrenes Mitglied
Guten Morgen liebes Forum,
ich habe mal wieder ein kleines Problemchen mit C++.

Ich möchte aus C++ raus, eine URL generieren und die URL im Browser aufrufen. Bisher sieht mein Code so aus:

Code:
int openBrowser(string hash)
{ 
	string hash2 = "32171627316728367812";
        int test = 12;

        CString url;
	url.Format(_T("http://www.test.de/%d"), hash);

	ShellExecute( NULL, _T("open"), url, NULL, NULL, SW_SHOWNORMAL );

	return 1;
}

Ich kann die URL nur öffnen, wenn ich vorher ein _T("") setze. Nun möchte ich ganz einfach einen 30 Ziffern langen hashCode an die URL anfügen. Wenn ich mit %d arbeite, dann wird der String nicht richtig Formatiert es kommt irgendwas kryptisches bei raus. Sobald der hash nur zwei Ziffern lang ist, dann funktioniert es.

Weis jemand wie die richtige Stringformatierung aussieht? Vielleicht geht das ganze auch ohne Stringformat? Nur es muss nur immer ein _T("") stehen.

Vielen Dank
 
Hallo,

du darfst nicht "string" sondern musst "wstring" und für den Format-String auch einen String-Parameter (%s) verwenden. Da die CString-Klase nicht mit string bzw. wstring umgehen kann, musst du den Parameter als einfachen C-String übergeben.
C++:
wstring hash2 = L"32171627316728367812";

//...

url.Format(_T("http://www.test.de/%s"), hash2.c_str());
Gruß
MCoder
 
Danke hat funktioniert. Kennst du vielleicht auch ein Tutorial um die externe IP Adresse auszulesen? Ich brauche die IP für mein C++ Tool.

Vielen Dank
gruß
 
Zurück