2017-03-17 17 views
0

Ich arbeite an einer Windows C++ App, wo ich einen URI ähnlich file:///C:/test 1/file.foo bekomme. Jetzt möchte ich z.B. Öffnen Sie diesen URI mit ifstream.URI in Pfad konvertieren

Gibt es eine C/C++ - API unter Windows, um einen solchen Pfad zu konvertieren?

Mein Google Foo scheint heute schwach zu sein.

+3

Entfernen Sie einfach den '" file: /// "' Teil? Oder einen Teilstring vom Rest bekommen? Und wenn der URI nicht mit '" file: /// "' beginnt, dann sollte er sowieso nicht als Datei geöffnet werden. –

+0

Und dann gibt es "%" Entweichen und vielleicht Existenzprüfung. Es ist nicht so einfach wie du denkst. – abergmeier

+1

Es gibt viele Bibliotheken und Funktionen, die URIs decodieren. Ich kann nicht glauben, dass du keinen finden kannst. Frage muss hier oft gestellt worden sein. Suche härter. –

Antwort

2

Es gibt multiple Datei URI "Versionen", so dass Sie sollten nicht parse es selbst, aber auch einige the APIs are broken.

Wenn Sie nur einen Windows-Pfad benötigen, rufen Sie PathCreateFromUrl.

Wenn Sie den Pfad nicht konvertieren wollen, dann müssen Sie CreateURLMonikerEx oder SHParseDisplayName (mit bind Kontext) verwenden, aber dann am Ende mit einem Windows IStream statt nach oben.

Verwandte Themen