String (URLDownloadToFile) Frage
-
Guten Tag zusammen
Wenn ich zwei Strings verketten will funktioniert das. Ungefähr so:
string test1 = "Hallo"; string test2 = "du"; cout << test1 + test2 << endl;
Aber sobald ich das in URLDownloadToFile schreibe funktioniert es nicht mehr.
Mein Code:
string test1 = "C:/"; string test2 = "lol.txt"; string test3 = test1 + test2; URLDownloadToFile(NULL,TEXT("http://127.0.0.1/test/test.txt"),TEXT(test3),0,NULL);
So funktioniert es nicht. Fehlerausgabe:
error C2065: 'Ltest3': nichtdeklarierter Bezeichner
Vielen Dank für die Hilfe
-
Das TEXT-Makro kannst du nur für Literale benutzen.
-
Hui danke für die rasche Antwort
Ich habe nun TEXT() entfernt. Nun bekomme ich diesen Fehler (Den ich mit TEXT() wegbekam)
'URLDownloadToFileW': Konvertierung des Parameters 3 von 'std::string' in 'LPCWSTR' nicht möglich
-
1. Benutze c_str() deines Strings.
2. Benutze std::wstring und L"mein String" oder stell dein Projekt auf nicht Unicode um oder benutze Konvertierungsfunktionen.Aus dem Thread: http://www.c-plusplus.net/forum/276277
Folgender Link: http://www.c-plusplus.net/forum/viewtopic-var-t-is-260205-and-start-is-10.html
-
Hallo
Danke.
Jetzt habe ich es so gemacht:string test1 = L"C:/"; string test2 = L"lol.txt"; string test3 = test1 + test2; URLDownloadToFile(NULL,TEXT("http://127.0.0.1/test/test.txt"),StringW(std::wstring::c_str(test3)),0,NULL);
Fehlermeldung:
error C3861: "StringW": Bezeichner wurde nicht gefunden.
-
wstring test1 = L"C:\\"; wstring test2 = L"lol.txt"; wstring test3 = test1 + test2; URLDownloadToFile(NULL,TEXT("http://127.0.0.1/test/test.txt"),test3.c_str(),0,NULL);
-
Danke! Das funktionierte. Leider funktioniert aber dies hier wieder nicht:
string test2 = getenv("TEMP"); wstring test3 = test2 + "/lol.txt"; URLDownloadToFile(NULL,TEXT("http://127.0.0.1/test/test.txt"),test3.c_str(),0,NULL);
-
Weil string und wstring verschiedener größe sind, kann man diese nicht gleichsetzen. Siehe z.B. hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-168607.html
-
Genius schrieb:
Hallo
Danke.
Jetzt habe ich es so gemacht:string test1 = L"C:/"; string test2 = L"lol.txt"; string test3 = test1 + test2; URLDownloadToFile(NULL,TEXT("http://127.0.0.1/test/test.txt"),StringW(std::wstring::c_str(test3)),0,NULL);
Fehlermeldung:
error C3861: "StringW": Bezeichner wurde nicht gefunden.
URLDownloadToFile(NULL,TEXT("http://127.0.0.1/test/test.txt"),stringutil::StringW(test3.c_str()),0,NULL);
-
Ich danke euch allen für die hilfreichen Antworten!
Es funktioniert nun damit:
#include <vector>... std::wstring convertStringToWstring(const std::string& str) { const std::ctype<wchar_t>& CType = std::use_facet<std::ctype<wchar_t> >(std::locale()); std::vector<wchar_t> wideStringBuffer(str.length()); CType.widen(str.data(), str.data() + str.length(), &wideStringBuffer[0]); return std::wstring(&wideStringBuffer[0], wideStringBuffer.size()); }