'const char [9]' kann nicht in 'char [9]' konvertiert werden?!?!



  • Hallo Liebe Community!
    Ich habe das Problem dass beim Compelieren kommt

    'const char [9]' kann nicht in 'char [9]' konvertiert werden
    

    und ich noch nicht lange Programmiere und leider keine Ahnung habe, was ich falsch gemacht habe.

    achja der betreffende Codeteil ist:

    char Figur[9];
    ...
    case 6:
    		Figur = "Dame    ";
    

    Könnt ihr mir helfen?

    MFG Grap :xmas1:



  • Du kannst einem C-String auf diese Weise nichts zu zuweisen.

    Benutz std::string.

    std::string Figur;
    ...
    case 6:
            Figur = "Dame";
    

    Dann gehts auch mit der Dame. 🙂



  • Vielen Dank!!!



  • Grap schrieb:

    Hallo Liebe Community!
    Ich habe das Problem dass beim Compelieren kommt

    'const char [9]' kann nicht in 'char [9]' konvertiert werden
    

    und ich noch nicht lange Programmiere und leider keine Ahnung habe, was ich falsch gemacht habe.

    achja der betreffende Codeteil ist:

    char Figur[9];
    ...
    case 6:
    		Figur = "Dame    ";
    

    Könnt ihr mir helfen?

    MFG Grap :xmas1:

    Wenn Du mit char arbeiten willst:

    #include <cstring>
    ...
    char Figur[10];
    ...
    case 6:
    	strcpy(Figur, "Dame    ";
    

    Nicht vergessen, Speicherplatz für die (unsichtbare) abschliessende Null reservieren,
    denn C-Strings sind nullterminiert. :xmas1:



  • warum strcpy(Figur, "Dame "); - strcpy(Figur, "Dame"); würds doch genau so tun...
    außerdem strcpy_s (so hieß es doch?!) und so ^^

    bb


  • Administrator

    unskilled schrieb:

    warum strcpy(Figur, "Dame "); - strcpy(Figur, "Dame"); würds doch genau so tun...
    außerdem strcpy_s (so hieß es doch?!) und so ^^

    Vielleicht will er ja die Leerzeichen drin haben 😉
    strcpy_s ist soweit ich weiss nicht im Standard, jedenfalls ganz sicher nicht im C++ Standard. Es wurde soweit ich weiss, nur zur Standardisierung vorsgeschlagen. Allerdings habe ich leichte Zweifel, ob sich das durchsetzt, denn es scheint nur Microsoft daran interessiert zu sein und es sind glaub ich momentan auch die einzigen, welchen strcpy _s in der Bibliothek haben.

    @Grap,
    Einfach noch als Zusatz. Arrays sind in C++ nicht zuweisebar, egal von welchem Typ. Man muss sich immer mit Funktionen aushelfen. Typische Funktionen in C sind hierfür, memcpy und strcpy .
    In C++, wenn man denn wirklich mal ein C-Array verwendet (im allgemeinen braucht man die Standardcontainer, da leichter zu handhaben), dann verwendet man std::copy .

    C/C++ Referenz: http://www.cplusplus.com/reference/

    Grüssli



  • Dravere schrieb:

    unskilled schrieb:

    warum strcpy(Figur, "Dame "); - strcpy(Figur, "Dame"); würds doch genau so tun...
    außerdem strcpy_s (so hieß es doch?!) und so ^^

    Vielleicht will er ja die Leerzeichen drin haben 😉
    strcpy_s ist soweit ich weiss nicht im Standard, jedenfalls ganz sicher nicht im C++ Standard. Es wurde soweit ich weiss, nur zur Standardisierung vorsgeschlagen. Allerdings habe ich leichte Zweifel, ob sich das durchsetzt, denn es scheint nur Microsoft daran interessiert zu sein und es sind glaub ich momentan auch die einzigen, welchen strcpy _s in der Bibliothek haben.

    Wieder was dazu gelernt ^^


Anmelden zum Antworten