Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » LPCTSTR Strings zusammenfügen...wie?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.10.2005, 16:44 Uhr
blackbox



Hallo,

Ich komme mir etwas dumm vor...aber wie kann man LPCTSTR Strings zusammenfügen?
Also etwa so etwas (was ja aber nicht geht, da ich ja hier mit Pointern zu tun habe...):

C++:
LPCTSTR tmp = _T("<") + pszRootName + _T(">");



Mit strcat bin ich leider auch nicht weiter gekommen. Kann mir hier jemand helfen?

Danke und Gruss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.10.2005, 18:44 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

LPCTSTR A 32-bit pointer to a constant character string that is portable for Unicode and DBCS


Das Teil ist nur ein Zeiger (da muss also speicher an der Stelle sein an der du rumfrickeln willst der dir gehört)... Wie wäre es einfach einen CString zu nehmen oder in dem Fall gleich auf die MFC zu verzichten und std::string zu verwenden...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 01.10.2005 um 18:45 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.10.2005, 23:10 Uhr
blackbox



Also wenn ich mit folgendem Code in ein Textfile schreibe

C++:
std::wstring strXML;
strXML = _T("ein bischen gültiges XML plus blabla");

WriteFile(hFile, strXML.c_str(), dwLength, &dwWritten, NULL);



Und ich dieses dann in WordPad anschaue dann sehe ich zwischen jedem Zeichen ein Kästchen.

Wenn ich dieses File dann mit meinem XML Parser auslesen möchte, geht das genau aus diesem Grund nicht, sind die Kästchen nicht dort, dann gehts.

Gruss Pascal
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.10.2005, 23:15 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


das liegt daran das du einen wide-string benutzt, d.h ein Zeichen belegt mind. 2 Bytes. Ich würde std::string benutzen, dann sollte es immer ein Zeichen pro Byte sein.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.10.2005, 23:39 Uhr
blackbox



Ok, aber dann muss ich den std::string in einen LPCTSTR casten, da writefile nur einen solchen als Parameter annimmt, und dann funktioniert es nicht (der LPCTSTR erhält dann nur Müll). Ich kann mir auch nicht vorstellen dass ich einfach so einen string in einen LPCTSTR casten kann...da das doch ein Pointer ist.


C++:
std::string strXML;
strXML = "ein bischen gültiges XML plus blabla";

WriteFile(hFile, (LPCTSTR)strXML.c_str(), dwLength, &dwWritten, NULL);



Irgend ein Bindestück fehlt mir noch??

Drum bin ich dann auch auf den std::wstring gekommen, dann hat das WriteFile immerhin funktioniert...

Dieser Post wurde am 01.10.2005 um 23:40 Uhr von blackbox editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.10.2005, 00:22 Uhr
blackbox



Aahhh...jetzt klappts...


C++:
dwLength = strlen(strXML.c_str());            
WriteFile(hFile, strXML.c_str(), dwLength, &dwWritten, NULL);



Es war eigentlich gar nicht WriteFile das den Parameter nicht angenommen hat, sondern die Funktion um die Grösse des Strings zu ermitteln, das kann man bei std::string mit

strlen(meinstring) gut machen.

Meine Frage jetzt:
Habe ich jetzt Unicode support in der Textdatei oder nicht??
Ist wstring für UTF-16 und string für UTF-8??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.10.2005, 09:24 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


benutz einfach strXML.len() oder length() für die länge.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
02.10.2005, 10:20 Uhr
blackbox



So danke...jetzt funktioniert alles. Ich bastle gerade ein Interface für den MSXML2 Parser auf Windows CE mit Hilfe der STL (die gibt's auch für Windows CE) ;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: