String -> Array



  • Hallo,
    ich hab mal ne totale Anfängerfrage, die Suche hat nichts rausgespuckt (???).
    Ich hab einen:

    string balla;
    den ich mit cin >> balla; befülle.
    Nun möchte ich aber diesen String in ein Array (char ballaaray(100)) (ich find die eckigen klammern auf diesem scheiss laptop nicht) umwandeln.

    Wie geht das?
    Vieln dDank 🙂



  • Hallo,
    Dafür ist die Funktion strncpy() oder auch strcpy() wie geschaffen (header string.h bzw. cstring).

    Bsp:

    #include <cstring>
    #include <iostream>
    
    int main()
    {
        const size_t size = 20;
        char arr[size];
        std::string s("Hallo Welt!");
    
        // von s nach arr kopieren.
        strcpy(arr, s.c_str(), size);
    
        // Kontrollausgabe:
        std::cout << "arr = " << arr << std::endl;
    }
    

    Für Informationen zu strncpy() bzw. strcpy() siehe z.B. http://www.cppreference.com.

    Gruß, Caipi



  • michio schrieb:

    Ich hab einen:

    string balla;
    den ich mit cin >> balla; befülle.
    Nun möchte ich aber diesen String in ein Array (char ballaaray(100)) umwandeln.

    1.) sollte man das nicht tun, sei doch froh, dass Du einen String hast.

    2.) geht das so:

    *std::copy( balla.begin(), 
          ( balla.size() < sizeof( ballaaray )? balla.end(): balla.begin() + (sizeof( ballaaray ) - 1) ), 
          ballaaray ) = char( 0 );
    

    Dieser furchtbare Ausdruck kommt daher, dass Du Dich nicht drauf verlassen kannst, dass balla nicht größer als 99 ist; womit wir wieder bei 1.) wären.

    Gruß
    Werner



  • So geht's auch, sogar ziemlich einfach:

    #include <string>
    #include <iostream>
    
    int main()
    {
        std::string string = "Hallo!";
    
        char cstring[50];
    
        cstring[string.copy(cstring, sizeof(cstring) - 1)] = 0;
    
        std::cout << cstring << std::endl;
    }
    

    mfg.



  • Hallo,

    wo besteht der Unterschied zwischen string.copy und strcpy (bzw. strncpy)

    Unterschied zwischen strcpy und strncpy ist mir bewusst, aber string.copy?

    Könnt ihr mich bitte aufklären?

    Danke!



  • nki schrieb:

    Hallo,

    wo besteht der Unterschied zwischen string.copy und strcpy (bzw. strncpy)

    Unterschied zwischen strcpy und strncpy ist mir bewusst, aber string.copy?

    Könnt ihr mich bitte aufklären?

    Danke!

    http://www.cppreference.com/cppstring/copy.html

    string::copy ist C++ und strcpy stammt noch von der cstdlib.

    mfg.



  • Eigentlich stammt strcpy aus der cstring.



  • Braunstein schrieb:

    Eigentlich stammt strcpy aus der cstring.

    Hast Recht, weiß auch nicht mehr wie ich drauf gekommen bin.

    mfg.


Anmelden zum Antworten