PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem: c++ convert string to LPCSTR



krusty
08.05.2010, 11:27
Ich habe angefangen mich für cpp zu ineressieren und bin nun auf ein kleines Problem gestoßen, was ich nicht so ganz verstehe,
ich verwende momentan vsc++ 2008 und arbeite mit win32 konsolenapps.
Ich habe mir die Funktion URLDownloadToFile mal angeschaut... sobald ich im 2. und 3. Parameter einen String übergebe, mecker mein VS rum und meint man könne einen const wchar_t [xy] nicht in einen LPCSTR kovertieren->

URLDownloadToFile(0,"http://www.url.de/bla.png","C:\\add.png",0,0);Ich habe mich ein wenig schlau gemacht, das Makro _T() oder TEXT() scheint dieses Problem lösen zu können->

URLDownloadToFile(0,TEXT("http://www.url.de/bla.png"),TEXT("C:\\add.png"),0,0);Funktioniert eig auch wunederbar. Sobald ich jedoch versuche dem _T oder TEXT Makro eine Stringvariable zu übergeben, meckert VS schon wieder rum->

string url;
string path;
URLDownloadToFile(0,TEXT(url),TEXT(path),0,0); Komicherweise mit folgender Fehlermeldung...

error C2065: 'Lurl': nichtdeklarierter BezeichnerIch habe nie eine Lurl Variable deklariert -.-*

Ich bitte um Aufklärung... da ich vorher in vb gecodet habe, bin ich mit dem Convertieren von Typen nicht so befreundet =$$.
Mfg Krusty.

G36KV
08.05.2010, 11:39
Da du wohl kein Unicode Zeichensatz brauchst, ist es besser wenn du Unicode in den Projekt Optionen deaktivierst, damit hast du dann keine Probleme mehr.

Projekt -> eigenschaften -> konfigurationseigen... -> allgemein -> zeichensatz
multibyte zeichensatz verwenden

Als C++ Anfänger solltest du erstmal ohne die String Klasse arbeiten, dadurch wird die benutzung der win api auch viel einfacher: C++-Programmierung: Strings – Wikibooks, Sammlung freier Lehr-, Sach- und Fachbücher (http://de.wikibooks.org/wiki/C%2B%2B-Programmierung:_Strings)

C-Strings / char solltest du dir anschauen

krusty
08.05.2010, 11:55
danke für die schnelle antwort, ich schau mir das wiki genauer an.
Eine weitere Fehlermeldung ist nun aufgetreten, nachdem ich den Zeichensatz verändert habe.

td::string' in 'LPCSTR' nicht möglich Die Meldung sagt ja im Großen und Ganzen das selbe auf, wie die vorherige.
Auch
string path = "uhhhh";
LPCSTR p = (LPCSTR)(path); schlägt fehl...

inout
08.05.2010, 12:04
wie siehts aus mit <string>.c_str() ?

krusty
08.05.2010, 12:07
funktioniert, danke =), ich werde mit die methode nochmal anschauen müsen, danke für eure hilfe =D

wacked
08.05.2010, 12:08
std::string ist eine klasse. überrachender weiße kann man das nicht in einen charpointer umwandeln.

LPCSTR p=path.c_str() sollte funktioniern.

Das T() oder Text() makro fügt ein L ein. Dadurch wird die Varibale ABC zu LABC. Die der compiler nicht kennt. Jetzt ist natürlich die Frage warum es dieses Makro gibt. Ein L vor eimen String (in dem Fall vor dem ") sagt dass es ein UNICODE (w)char array ist, im gegensatz zum normalen ASCII char array.

Edit:Warum müßt ihr auch so schnell schreiben?

krusty
08.05.2010, 12:25
sehr informatiev, danke.

Perishand
08.05.2010, 13:14
CT2CA pszCharacterString (csMyString);