Pointer (LPCTSTR, LPTSTR, LPVOID) in Datei schreiben
-
Erstmal ein Hallo in eurem Forum...

Und dann komm ich auch gleich mit einem Problem und hoffe ihr könnt mir helfen...
Ich brauche eine Methode, die folgende Parameter übergeben bekommt und diese dann in eine Zeile durch Leerzeichen getrennt in eine Datei schreibt.
void PoolUpdating::update(long lReplySize, long lNumbEmbObjects, long lIndServerLoad, LPCTSTR lpszServerName, int intServerPort, LPTSTR lpszInitObjectName, LPTSTR lpszVerb, DWORD dwOptionalLength, LPVOID lpOptional){ //In Datei schreiben }Probleme machen mir dabei die Pointer.
Alle anderen lassen sich ja z.B. durch folgendes in eine Datei schreiben:ofstream datei; datei.open("neu.txt", ios::app); datei << lRequestSize; datei << " "; . . . datei << " "; datei << dwOptionalLength << endl; datei.close;Ein Beispieleintrag (nicht real) in der Datei sollte dann so aussehen:
54370 8 0 www.c-plusplus.net 80 /index.html GET 0 NULLDies geht ja leider mit den Pointern nicht so, da würde dann nur die Referenz geschrieben.
Dereferenzieren klappt leider so z.B. auch nicht:
string str = *lpszServerName;da kommt dann:
'const WCHAR' kann nicht in 'std::basic_string<_Elem,_Traits,_Ax>' konvertiert werdenWenn ich z.B. so konvertiere:
char ch = (char)*lpszServerName;wird leider nur das erste Zeichen ausgegeben.
Folgende Ausgabe funktioniert ohne Probleme:
wcout <<"lpszServerName: " << lpszServerName << endl;Projekteinstellung ist UNICODE, was ja von Bedeutung ist und das soll auch so bleiben.
Die Parameter, die übergeben werden lassen sich auch nicht ändern, da die aus anderen Programmteilen so kommen.Des weiteren bräuchte ich noch eine Funktion, die LPTSTR lpszVerb überprüft, ob dort GET oder POST drin ist. Sprich einen Vergleich.
Dies geht leider auch nicht:
char* GET = "GET"; if(!strcmp(GET, lpszVerb)) cout << "Die Strings sind gleich!" << endl;Ich wäre euch wirklich für Hilfe sehr dankbar. Das www konnte mir hier bis jetzt leider noch nicht weiterhelfen.
-
Wenn du mit Unicode-Strings arbeitest, muss du die entsprechenden Typen, Funktionen und Objekte wählen.
Statt
charmuss es alsowchar_theißen, stattstd::cout std::wcout, stattstd::ofstreamnimmst dustd::wofstreamusw.String-Literale müssen mit einem L markiert werden: L"Hello world".
Stefan.