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 mit

    LPCTSTR 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


Anmelden zum Antworten