CString.GetBuffer(0) => char*



  • Hallo!

    Ich muss einem char argv[x]* 2 Werte vom Typ CString zuweisen, weil eine andere Funktion so ein "char*-Argumenten-Array" übergeben haben will.

    Nun bin ich mir nicht sicher, ob ich das so machen darf:

    char* my_argv[1];
    CString str;
    
    str = ...(irgendeine Zuweisung);
    
    my_argv[0] = "";
    my_argv[1] = str.GetBuffer(0);
    

    Es funktioniert, egal, wie lang str ist, nur:

    ➡ Ist es jemandem bekannt, das man so die Länge von str so nicht wissen muß? Oder ist das vielleicht nur Zufall?
    ➡ Muss ich in jedem Fall noch str.ReleaseBuffer() aufrufen? Auch, wenn ich "0" bei GetBuffer übergeben habe?

    Und:
    Folgenden Trick habe ich hier im Forum gefunden.
    ➡ Ist das evtl. besser als die obige Methode? Ich verstehe die Typkonvertierung nicht so ganz. Kann das jemand kurz erklären?

    char* my_argv[1];
    CString str;
    ...
    my_argv[1] = (LPSTR)(LPCSTR)str;
    

    Schon mal vielen Dank im Voraus,

    Sebastian





  • ja, tut mir leid, ich habe vorher das falsche Forum (C++) verwendet 🤡. Jetzt habe ich mir halt gedacht, vielleicht hat ja hier noch jemand einen ganz schlauen Tipp... Ich will aber niemandem die Zeit stehlen. Ist doch alles freiwillig.

    Tschuldigung


Anmelden zum Antworten