char (ohne \0) mit bestimmer Länge in CString



  • Hallo Forum,

    ich erhalte von einer Funktion einen char-Zeiger und einen int (Länge des Chars) zurück. Nun würde ich gerne dieses in einen CString packen, wobei der CString nullterminierend sein sollte. Wie kann ich das machen? Ich verzweifel mal wieder daran :(.



  • Das hängt davon ab... wenn in dem char-Array schon NULs drin sind, wirst Du sehr wenig Glück damit haben... ansonsten setze doch ganz hinten noch eine NUL hin (wenn der Buffer gross genug ist) und weise es zu?
    Ansonsten:

    CString s(charArray, len);
    

    !?



  • Also das Char-Array hat kein '\0' am Ende. Ich habe es jetzt so gemacht 🙂

    // iBytes = Anzahl Chars im Array (Länge)
    // pBuffer = Array der Chars (char*)
    
    CString sData;
    char* pData;
    pData = new char[iBytes + 1];
    pData[iBytes] = '\0';
    
    // Daten kopieren mit '\0'
    memcpy_s(pData, iBytes, pBuffer, iBytes);
    
    // Daten in den String setzen
    sData = pData;
    
    delete pData;
    

    Ich glaube jedoch das es einfacher geht oder 🙂


  • Mod

    Jochen Kaalmbach hat Dir doch den entsprechenden Konstruktor angegeben!

    Einfach Zeiger und Länge angeben und das wars!


Anmelden zum Antworten