String in string-array ?



  • Hiho,

    ich will ein string in ein string-array kopieren, aber bekomm es einfach nicht hin.

    zur veranschaulichung:

    string daten0 = "test string";
    char Datum[10][11];
    
    strcpy(Datum[0], daten0);
    

    so funkionierts leider nicht, da gibt er mir als fehlermeldung:
    error: cannot convert 'std::string' to 'const char*' for argument '2' to 'char* strcpy(char*, const char*)

    wobei wenn ich:

    char Datum[10][11];
    
    strcpy(Datum[0], "test string");
    

    gibt er mir ja die richtige lösung 😕

    Also ist "daten0='test string'" nicht gleich "test string" ?

    Wo liegt da mein denkfehler oder kennt jemand eine andere lösung die "daten0" ins string-array "Datum[0]" zu bekommen ?

    Mfg Analyse



  • Dein Problem ist, dass du kein string Array hast sondern ein Array von char Arrays. Das was du da machst ist C-Stil, der wird hier im C++ Unterforum nicht so gerne gesehen.

    In C++ würde man es folgendermaßen machen:

    #include <vector>
    using namespace std;
    

    [...]

    string daten0 = "blabla";
      vector<string> strings(10);
      strings[0] = daten0;
    

    Alternativ für fixed arrays gibt es auch noch std::array.

    mfg, René~



  • Ahh, es funktioniert !!

    Die c++ lösung gefällt mir zudem optisch besser.

    Danke Rene. 👍



  • Analyse schrieb:

    Ahh, es funktioniert !!

    Die c++ lösung gefällt mir zudem optisch besser.

    Danke Rene. 👍

    Das ist nicht nur eine Frage der Optik, denn dein "test string" wäre auch zu lang gewesen.



  • manni66 schrieb:

    Das ist nicht nur eine Frage der Optik, denn dein "test string" wäre auch zu lang gewesen.

    Stimmt natürlich 11 Zeichen + Nullzeichen. Ergo hättest du hier schon nen Buffer Overflow in deinen Code eingebaut.

    mfg, René~



  • Und jetzt nochmal der Grund wieso es nicht funktioniert hat:
    Du hast in strcpy nur daten0 geschrieben, aber es hätte daten0.c_str() heißen müssen...



  • Das ist nicht nur eine Frage der Optik, denn dein "test string" wäre auch zu lang gewesen.

    Ja, hatte ich mich verzählt für das bsp. 🙂

    Bei der vector<string> methode wird ein kompletter string für die Endsequenz verbraucht oder ?

    Du hast in strcpy nur daten0 geschrieben, aber es hätte daten0.c_str() heißen müssen...
    

    gut zu wissen, danke.



  • Bei der vector<string> methode wird ein kompletter string für die Endsequenz verbraucht oder ?

    Tönt wirr... was meinst Du mit Endsequenz?
    Im Zweifelsfall ist die Antwort Nein.


Anmelden zum Antworten