char Array mit CString füllen



  • Hi, mal ne Frage 😃
    Ich hab vor mit MFC einen Dialog zu schreiben, der Text codiert. Nu muss ich dazu aber irgendwie an die char-Werte als Array kommen um ihn zu codieren Ungefähr so:

    CString sString="Hallo Welt!";
    char acText[256];
    float afCode[256];
    
    //Jetzt irgendwie die den String aus sString nach acText kopieren (wie strcpy ungefähr)
    for(int i=0;i<256;i )
        afCode[i]=float(int(acText[i]))/2.F; //Codieren
    
    //Jetzt sollten alle acText-Werte verschlüsselt in afCode liegen
    

    😞 Gibt\\'s für sowas Funktionen, etc. ? PS: Ich weiß, dass es eine schlechte verschlüsselung ist... 👎



  • probiers mal damit

    // ungetestet ausn kopf

    float fNumber = 0.0;
    CString strNumber = _T("1.2");
    fNumber = _tstof(strNumber.GetString());
    
    int iNumber = 0;
    iNumber = _tstoi(strNumber.GetString());
    

    nichts desto trotz - schau dir mal GetBuffer, und GetString an, da gibts glaub ich noch ein weiteres, einfach die members von CStringT durchschaun

    fuer convertierungen von wchar_t zu char und umgekehrt gibt es MultibyteToWideChar sowie WideCharToMultiByte



  • den [] Operator kennst du ja bereits. Dann gibts noch die Möglichkeit über GetBuffer:

    CString Text  = "Hallo Welt";
    // hab das jetzt mal dynamisch gemacht
    char* acText  = new char[Text.GetLength() + 1]; // + 1 für '\0'
    float* afCode= new float[Text.GetLength()];
    memset(acText,0,Text.GetLenght()); 
    
    strcpy( acText, Text.GetBuffer(Text.GetLength()), Text.GetLenght() );
    
    int i = 0;
    for(i=0;i<Text.GetLength();i++ )
        afCode[i]=float(int(acText[i]))/2.F; //Codieren
    
    // mit new[] angeforderter Speicher wieder mit delete[] löschen (wichtig!)
    delete[] acText;
    delete[] afCode;
    


  • Danke! 🙂 👍 🙂
    Es klappt!

    Was macht eigentlich memset?
    Bei mir klappts auch ohne.



  • Vox 3D schrieb:

    Was macht eigentlich memset?

    Sei mal nicht so faul. Frag google oder direkt die MSDN!



  • Was passiert, wenn Du in Visual Studio den Cursor auf memset positionierst und F1 drückst?



  • memset oder was ähnliches wird aber von strcpy schon aufgerufen, deshalb unnötig.

    Das mit Visual Studio geht nicht weil die CD1 von MSDN einen gewaltigen Kratzer hat (Problem: kleiner Bruder...) und ja, ich weiß dass die MSDN online ist, darüber hab ichs ja auch rausgefunden.


Anmelden zum Antworten