Wie entgeht URL einem MFC CString?URL, die MFC-Zeichenfolgen löscht
4
A
Antwort
7
0
Ich habe eine Wrapper-Funktion für andere, die über diese Lösung kommen können. Auch erfordert wininet.lib Verknüpfung und einschließlich Wininet.h
bool EscapeURL (CString& url, DWORD options = ICU_DECODE | ICU_ENCODE_PERCENT)
{
DWORD bytes = url.GetLength() + 1;
LPTSTR escapedString = new TCHAR[bytes + 1];
escapedString[0] = 0;
// First read will generate the correct byte count for the return string
//
bool result = InternetCanonicalizeUrl (url.GetBuffer(), escapedString, &bytes, options);
if (!result)
{
// Resize the String
//
delete [] escapedString;
escapedString = new TCHAR[bytes];
escapedString[0] = 0;
result = InternetCanonicalizeUrl (url.GetBuffer(), escapedString, &bytes, options);
}
if (result)
{
url = escapedString;
delete [] escapedString; // Thanks The Steve
}
else
{
// Optional
// If the call fails return the message in the url
//
DWORD errorMessageID = ::GetLastError();
LPSTR messageBuffer = nullptr;
size_t size = FormatMessageA (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL);
std::string message (messageBuffer, size);
LocalFree (messageBuffer);
url = message.c_str();
}
return result;
}
Nutzungs
CString internetUse = "The Internet is %%4 <pr0n>";
EscapeURL (internetUse);
// internetUse = 0x01538890 "The%20Internet%20is%20%25%254%20%3Cpr0n%3E"
+0
Sie verlieren Speicher. EscapedString wird kopiert, aber nie gelöscht. – TheSteve
Verwandte Themen
- 1. löscht Herkunft url
- 2. htaccess löscht die URL nicht richtig
- 3. .htaccess nicht-www www URL Redirect Löscht jeder URL-Pfad über Basis-URL
- 4. deleteOnExit löscht die Datei nicht
- 5. Dropzone js URL verknüpfen löscht mit Schaltfläche Entfernen
- 6. Wie man ein @ -Zeichen im Passwortfeld einer smb: // URL löscht
- 7. Warum löscht meine Url nicht die aktuelle Seite, sondern fügt sie mit dem neuen Link hinzu
- 8. Löscht [] Aufrufdestruktoren?
- 9. Wie löscht [] die Größe eines Arrays?
- 10. fs.DeleteFile (var) löscht die Datei nicht
- 11. Django/Auth: Logout löscht die Sitzungsdaten?
- 12. clearRect Funktion löscht nicht die Leinwand
- 13. Rückgrat entfernen Ansicht löscht die El
- 14. Poll (2) löscht die Ereigniswarteschlange nicht
- 15. Warum löscht zip() die Werte meines Generators?
- 16. Java-Kalender löscht die Stunde des Tages
- 17. Pygame löscht die Liste nicht richtig
- 18. Wie löscht [] die Größe des Operandenarrays?
- 19. NSFileManager löscht keine Datei, die existiert
- 20. Farbe löscht die Daten in qtableview
- 21. Löscht die Neuinstallation von MAMP die vorhandene Datenbank?
- 22. Löschen eines Indexes löscht nicht die Daten, die mapper_parsing_exception bekommen?
- 23. Die mehr als einmal ausgeführt wird löscht die relevanten Daten
- 24. Programmcode löscht die Daten, die ich behalten möchte
- 25. die URL
- 26. Wie man eine MongoDb-Sammlung mit Casbah löscht/löscht
- 27. Soft löscht mit Slick
- 28. JQuery löscht ein Eingabetextfeld
- 29. -Trigger BEFORE INSERT löscht
- 30. chrome löscht meine Erweiterung
Schnell Lösung, schön. Ich wollte Quellcode posten, aber das wird nur fin! – toto
Ein CString wird nicht direkt übernommen oder zurückgegeben, aber es ist einfach, hin und her zu konvertieren. –
Hinweis - Funktion kann auch dekodieren, aber lesen Sie die Bemerkungen sorgfältig. – Spike0xff