CString to Char



  • Hallo,
    hab da ein Problem mit Strings und so,

    ich möchte gern einen CString in einen Char konnvertieren.

    z.B.

    char myChar[1024];
    CString myStr("Der Text");

    ...

    Es soll also dann "Der Text" in meinem Charfeld stehen.
    Es ist wichtig das dieses Feld einen feste Größe hat.

    Kann mir da jemand eine sichere Möglichkeit zeigen dies zu erreichen?

    😕 😕



  • Hallo,

    z.B.:

    char myChar[1024]; 
    CString myStr("Der Text"); 
    
    lstrcpy(myChar, myStr);
    

    oder

    wsprintf(myChar, "%s", (LPCTSTR) myStr);
    

    das mußt du aber nicht machen, denn ein CString kann aufgrund des überladenen (LPCTSTR)-Operators überall dort eingesetzt werden, wo ein char-Array erwartet wird (siehe auch mein erstes Beispiel oben).

    MfG



  • Probe-Nutzer schrieb:

    das mußt du aber nicht machen, denn ein CString kann aufgrund des überladenen (LPCTSTR)-Operators überall dort eingesetzt werden, wo ein char-Array erwartet wird.

    Nur für Zeiger auf const. Sonst GetBuffer & Co.



  • Vielen Dank,

    aber ich brauche wirklich ein festes Chararray weil dieses Programm als
    Plugin für eine andere Anwendung dient und dazu feste Daten Strukturen benötigt werden.

    Kannst du mir sagen wie CString eigentlich genau funktioniert? wird den da der Speicher festgelegt?

    Und wie kann ich eigentlich nun in das char-Array selber text reinschreiben.

    geht das nur mit sprintf(myChar,"hallo") ?



  • Veritas schrieb:

    Vielen Dank,

    aber ich brauche wirklich ein festes Chararray weil dieses Programm als
    Plugin für eine andere Anwendung dient und dazu feste Daten Strukturen benötigt werden.

    Kannst du mir sagen wie CString eigentlich genau funktioniert? wird den da der Speicher festgelegt?

    Und wie kann ich eigentlich nun in das char-Array selber text reinschreiben.

    geht das nur mit sprintf(myChar,"hallo") ?

    machs einfach so:

    string s;
    char *c = s.c_str();
    

    oder vielleicht findest du da was:
    http://cplus.kompf.de/artikel

    cu



  • Veritas schrieb:

    aber ich brauche wirklich ein festes Chararray

    was verstehst du unter einem "festen char-Array"? Die von mir vorgestellten Methoden funktionieren doch so, wie du es in deinem Beispiel gewollt hast, etwas anderes konnte ich nicht erkennen. Und ja, wenn man ein char-Array hat, dann ist der übliche Weg, dort etwas "hineinzuschreiben", daß man wsprintf oder lstrcpy benutzt (wir sind hier aber im MFC-Forum, deshalb habe ich die WinAPI-Funktionen angegeben, es gibt natürlich auch Funktionen der C-Runtime, die das gleiche leisten). Ein MFC-CString ist ein "dynamisches char-Array", es paßt sich automatisch an die gewünschten Speicher-Erfordernisse an (und hat darüber hinaus eben viele Methoden, um eine Zeichenkette zu bearbeiten)

    MfG



  • Ein CString kann aber auch > 1024 sein also wurde ich auch nur 1024 aus dem CString rausholen sonst knallt es.


Anmelden zum Antworten