Char Array in einer Funktion ausgeben.



  • Dachdecker schrieb:

    Der Herr Dachdecker hätte aber gerne, wenn möglich C++ Strings :).
    Ich weiß nämlich vorher nicht wie lang manche eingaben werden bzw. ich hab auch kein bock mich darum zu

    Der Herr Dachdecker ist wohl einmal zuviel vom Dach gefallen. Wovon rede ich denn die ganze Zeit?


  • Mod

    Dachdecker schrieb:

    Falls jemand von mir herausfindet wie man ein char array zurück gibt wäre ich ihm sehr verbunden.

    Gespaltene Persönlichkeit oder bloss zerstreut? 😕



  • Dachdecker schrieb:

    Falls jemand von mir herausfindet wie man ein char array zurück gibt wäre ich ihm sehr verbunden.

    Falls du es noch nicht mitbekommen hast: Das geht nicht.

    Ein Array existiert nach verlassen des Scopes, in dem es definiert wurde, nicht mehr. (hier am Ende der Funktion). Wie jede andere Variable auch.

    Du kannst den Speicher dafür dynamisch besorgen und den Zeiger darauf zurück geben.

    Aber was hast du gegen c_str von std::string ?
    Weißt du überhaupt was das macht?



  • Die Ausgabe funktioniert nur die Sache hat einen kleinen Haken.
    Eigentlich müsste ich ja E mit free(E) reinigen aber dann kann ich den Wert ja nicht mehr zurück geben :-(.

    #include <iostream>
    #include <string>
    #include <stdlib.h>
    using namespace std;
    
    char &my_function(string a)
    {
        char * E;
         E = (char *) malloc(a.size());
    
        for(int i=0;i<a.size();i++){
            E[i] = a[i];
        }
    
        char *s = E;
     //   free(E);
    
        return *s;
    
    }
    
    int main()
    {
        string dumm = "dumm";
    
        cout << &my_function(dumm);
        return 0;
    }
    


  • Die Sache hat nur einen Haken: du wirst dumm sterben.



  • manni66 schrieb:

    Dachdecker schrieb:

    Der Herr Dachdecker hätte aber gerne, wenn möglich C++ Strings :).
    Ich weiß nämlich vorher nicht wie lang manche eingaben werden bzw. ich hab auch kein bock mich darum zu

    Der Herr Dachdecker ist wohl einmal zuviel vom Dach gefallen. Wovon rede ich denn die ganze Zeit?

    Ich ging davon aus du meinst string als parameter 🙂
    Nicht als das was mit return ausgegeben wird.

    manni66 schrieb:

    Die Sache hat nur einen Haken: du wirst dumm sterben.

    🙄



  • Dachdecker schrieb:

    Die Ausgabe funktioniert nur die Sache hat einen kleinen Haken.
    Eigentlich müsste ich ja E mit free(E) reinigen aber dann kann ich den Wert ja nicht mehr zurück geben :-(.

    #include <iostream>
    #include <string>
    #include <stdlib.h>
    using namespace std;
    
    char &my_function(string a)
    {
        char * E;
         E = (char *) malloc(a.size());
    
        for(int i=0;i<a.size();i++){
            E[i] = a[i];
        }
    
        char *s = E;
     //   free(E);
    
        return *s;
    
    }
    
    int main()
    {
        string dumm = "dumm";
    
        cout << &my_function(dumm);
        return 0;
    }
    

    Häää?
    Ich denke du willst C++ Strings nutzen?
    malloc ist C und kein C++.

    Und so wie ich das auf den ersten Blick sehe in der SQLite-API wird ein const char* erwarten, den kriegst du von einem std::string per c_str Methode.

    Wo ist also dein Problem??

    Edit: Oder willst du X machen, denkst es geht per Y und anstatt nach X zu fragen, fragst du nach Y?!?



  • Skym0sh0 schrieb:

    Dachdecker schrieb:

    Die Ausgabe funktioniert nur die Sache hat einen kleinen Haken.
    Eigentlich müsste ich ja E mit free(E) reinigen aber dann kann ich den Wert ja nicht mehr zurück geben :-(.

    #include <iostream>
    #include <string>
    #include <stdlib.h>
    using namespace std;
    
    char &my_function(string a)
    {
        char * E;
         E = (char *) malloc(a.size());
    
        for(int i=0;i<a.size();i++){
            E[i] = a[i];
        }
    
        char *s = E;
     //   free(E);
    
        return *s;
    
    }
    
    int main()
    {
        string dumm = "dumm";
    
        cout << &my_function(dumm);
        return 0;
    }
    

    Häää?
    Ich denke du willst C++ Strings nutzen?
    malloc ist C und kein C++.

    Und so wie ich das auf den ersten Blick sehe in der SQLite-API wird ein const char* erwarten, den kriegst du von einem std::string per c_str Methode.

    Wo ist also dein Problem??

    Edit: Oder willst du X machen, denkst es geht per Y und anstatt nach X zu fragen, fragst du nach Y?!?

    Ich will nur ein Char Array zurück geben mehr nicht.
    Lasst euch von dem String beim funktionsparameter nicht verwirren Leute.

    Für Babys:

    return CharArray[]



  • dachdecker schrieb:

    Ich will nur ein Char Array zurück geben mehr nicht.

    Für Babys:

    return CharArray[]

    Für Begriffsstutzige:
    Das geht nicht!



  • der te will also einen std::string in einen c-string wandeln (manuell!) ohne ein proxy-objekt welches den dynamischen speicher des c-strings scope-übergreifend wieder frei gibt. dabei wurde er mehrfach auf die std::string-methode std::string::c_str() hingewiesen, was er ignorierte. nutz also c_str() oder lass das forum in ruhe, meine güte lol...

    edit: formulierung angepasst.



  • Vielleicht helfen ja dies beiden Beiträge weiter:

    http://www.c-plusplus.net/forum/138655

    http://www.c-plusplus.net/forum/53702



  • DirkB schrieb:

    Vielleicht helfen ja dies beiden Beiträge weiter:

    http://www.c-plusplus.net/forum/138655

    http://www.c-plusplus.net/forum/53702

    Das ist mal eine Sprache die ich verstehe danke 🙂
    Bis eben dachte ich ihr ignoriert mehr mich als ich euch :3
    Die ganze Zeit meinte ich ihr wollt Stur mich auf eine Methode verweisen die mir mir nichts bringt 😞

    Der Dachdecker meinte mit c_str meint ihr ich soll normale CharStrings verwenden.

    Mein Problem hat sich auch gelößt danke für eure Gedult :3



  • dachdecker schrieb:

    Das ist mal eine Sprache die ich verstehe danke 🙂
    ...
    Der Dachdecker meinte mit c_str meint ihr ich soll normale CharStrings verwenden.

    Dann hast du die falschen Fragen gestellt.
    Hinweise gab es:

    DirkB schrieb:

    Aber was hast du gegen c_str von std::string ?
    Weißt du überhaupt was das macht?

    Skym0sh0 schrieb:

    Oder willst du X machen, denkst es geht per Y und anstatt nach X zu fragen, fragst du nach Y?!?

    dachdecker schrieb:

    Die ganze Zeit meinte ich ihr wollt Stur mich auf eine Methode verweisen die mir mir nichts bringt

    Das die Antworten hier so einstimmig kamen, ist er selten 😃

    Dein Problem ist, das du weder C++ noch C in den Grundlagen kennst.
    Trotzdem willst du hier diese beiden verschiedenen Sprachen vermischen.

    Was verstehst du unter CharStrings?


Anmelden zum Antworten