Inhalt von LPCTSTR ändern?
-
Hallo,
wie kann ich den Inhalt von LPCTSTR direct ändern, z.B. aus der Mitte etwas rauslöschen oder mit anderen Wert ersetzen?Bsp:
CString csMsg = "Das ist ein Text"; LPCTSTR lpsz = csMsg; // in lpsz soll jetzt das "ein" mit "kein" ersetzt werden!danke
pixel
-
so ohne weiteres wird es nicht gehen.
Ich würde das mit dem CString machen.CString msg = "Das ist ein Text"; // nur ein k hinzufügen msg.Insert( 8, 'k' ); //oder ein durch kein ersetzen msg.Replace( "ein", "kein" );
-
Hallo,
hab ich mir auch gedacht, ich schau gerade in der MSDN ob nicht
eine C-Funktion dabei ist die das machen kann.
lg
pixel
-
In einem LPCTSTR kannst du sowieso nichts ändern (das C steht für 'const'). Bei einem "normalen" C-String müsstest du alle Zeichen hinter der Einfügestelle ein Feld nach hinten schieben (z.B. per memmove()) und anschließend dein 'k' dazwischenschreiben (geht natürlich nur, solange der Speicherbereich hinter dem Stringende noch dir gehört).
-
Hallo,
danke für die Antwort, hab eine Alternative gefunden, also, ich muß ja den
string nicht unbedingt kürzen, ich möchte nur dass das was ich nicht möchte verschwindet, es langt mir auch wenn ich es ersetze!
Dazu benutze ich noch eine Variable LPTSTR, :), und mitLPCTSTR lpsz; LPSTR lpstr = (LPSTR) lpsz; while(*lpstr) { // noch andere Parameter... ... // _strnset(const char*, const char*, size_t); _strnset(lpstr, ' ', 1); // ein Zeichen ersetzen mit ' '! ... }versuche ich den nicht gewünschten Teil zu eliminieren!
, und so wie es
aussieht funktioniert es auch...
lg
pixel