Zahlen in Strings umwandeln



  • Ich würde das Buch tauschen.

    Jos, mit dem Buch tust du dir keinen Gefallen. Das sieht nach einem C C++ gemisch aus.



  • Mir ist klar das der Code völlig falsch ist. Allerdings habe ich auch keine Idee wie ich die Code fetzen in ein Programm bekomme wo ich nachvollziehen kann wie das mit den Zahlen in Strings umwandeln quasi "praktisch" umzusetzen ist.



  • Wenn dein Compiler den neuen Standard noch nicht kann, geht es so:

    #include <sstream>
    #include <string>
    #include <iostream>
    using namespace std;
    int main()
    {
        int alter = 35;
        ostringstream os;
        os << alter;
        string str( os.str() );
        cout << str;
    }
    

    Wenn dein Compiler den neuen Standard kann, geht es so:

    #include <string>
    #include <iostream>
    using namespace std;
    int main()
    {
        int alter = 35;
        string str = to_string( alter );
        cout << str;
    }
    


  • Skym0sh0 schrieb:

    Ja.

    Ich tausche Rat gegen Fehlermeldung.

    Haha 😃



  • Jos schrieb:

    Mir ist klar das der Code völlig falsch ist.

    Der erste wichtige Schritt den du lernen musst (egal welche Sprache du lernst) ist: wie helfe ich mir bei einem Problem.

    Dein wichtigstes Tool hierbei ist der Compiler. Der sagt dir eine Fehlermeldung.
    Ich habe deinen Code jetzt ohne Änderung in ideone.com rein geworfen und folgendes Ergebnis erhalten:

    prog.cpp: In function ‘int main()’:
    prog.cpp:17:12: error: conflicting declaration ‘std::string str’
         string str = tmp;
                ^
    prog.cpp:12:10: error: ‘str’ has a previous declaration as ‘char str’
         char str;
    

    Lerne deinen Compiler zu verstehen was er dir sagen will. Das ist viel wichtiger als alles andere. Das ist die wichtigste Lektion von allen.

    Weisst du was der Compiler dir hiermit sagen will?



  • Okay danke.

    Natürlich kann ich mit den Codes nicht viel Anfangen 😃

    Aber in den beiden Codes ist z.B. gar nicht "char tmp[40]" enthalten. Sind die 4 Punkte wo im Buch stehen falsch bzw. geht es damit nicht?



  • Hallo Shade of Mine.

    nein das weiß ich leider nicht... 😞



  • Jos schrieb:

    Aber in den beiden Codes ist z.B. gar nicht "char tmp[40]" enthalten. Sind die 4 Punkte wo im Buch stehen falsch bzw. geht es damit nicht?

    falsch ist ein hartes Wort. Das was du machst, ist eher C like. Das was wir hier machen ist C++. Wenn der Titel deines Buches C++ ist, und darin C Kram drinsteht, dann ist das Buch schrott. Jetzt musst du dich entscheiden, welche Sprache du lernen willst. :p


  • Mod

    Jos schrieb:

    Aber in den beiden Codes ist z.B. gar nicht "char tmp[40]" enthalten. Sind die 4 Punkte wo im Buch stehen falsch bzw. geht es damit nicht?

    Das ist das erwähnte Problem, das gar nicht klar ist, ob hier C oder C++ gemacht werden soll. Das sind zwei völlig andere Sprachen, die man zwar in gewissen Rahmen mischen kann, aber in der Regel nicht sollte. Die Antworten hier im Thread sind relativ typisches C++, cout und string sind ebenfalls typische Elemente der C++-Standardbibliothek. Aber sprintf und char-Arrays sind typisch C. Und hier fängt der Ärger auch schon an: Auch wenn man an sich sprintf in C++ benutzen kann, so funktioniert es nicht zusammen mit den typischen C++-Elementen wie string. Da muss man dann so relativ umständliche Umwege machen, wie dein Buchautor vorschlägt. Das deutet da drauf hin, dass der Autor eigentlich nur C kann, aber denkt, dass wenn er printf durch cout ersetzt, dann wäre es auf einmal C++. Ein denkbar schlechtes Zeichen für ein Lehrbuch, denn dann lernst du keine der beiden Sprachen richtig. Kommt leider sehr oft vor, da die Qualitätssicherung bei vielen Verlagen eher bescheiden ist und es vor allem da drauf ankommt, dass der Autor schön leserfreundlich schreibt, nicht auf die fachliche Kompetenz.



  • Danke "out" für den Hinweis...

    Oh man es ist ja echt schwer ein Einsteiger Buch für C++ zu finden, das wirklich gut geschrieben ist... Dachte das wo ich habe, ist so eines. Wobei es bis auf kleine Ausnahmen sehr gut zu Verstehen ist.



  • SeppJ schrieb:

    Jos schrieb:

    Aber in den beiden Codes ist z.B. gar nicht "char tmp[40]" enthalten. Sind die 4 Punkte wo im Buch stehen falsch bzw. geht es damit nicht?

    Das ist das erwähnte Problem, das gar nicht klar ist, ob hier C oder C++ gemacht werden soll. Das sind zwei völlig andere Sprachen, die man zwar in gewissen Rahmen mischen kann, aber in der Regel nicht sollte. Die Antworten hier im Thread sind relativ typisches C++, cout und string sind ebenfalls typische Elemente der C++-Standardbibliothek. Aber sprintf und char-Arrays sind typisch C. Und hier fängt der Ärger auch schon an: Auch wenn man an sich sprintf in C++ benutzen kann, so funktioniert es nicht zusammen mit den typischen C++-Elementen wie string. Da muss man dann so relativ umständliche Umwege machen, wie dein Buchautor vorschlägt. Das deutet da drauf hin, dass der Autor eigentlich nur C kann, aber denkt, dass wenn er printf durch cout ersetzt, dann wäre es auf einmal C++. Ein denkbar schlechtes Zeichen für ein Lehrbuch, denn dann lernst du keine der beiden Sprachen richtig. Kommt leider sehr oft vor, da die Qualitätssicherung bei vielen Verlagen eher bescheiden ist und es vor allem da drauf ankommt, dass der Autor schön leserfreundlich schreibt, nicht auf die fachliche Kompetenz.

    Auch danke an dich Sepp für die Infos. Jetzt bin ich bei der Hälfte des Buches und habe das Gefühl nichts gelernt zu haben...

    Hast du bzw. ihr gute Buchtipps für einen C++ Einsteiger?


  • Mod

    Jos schrieb:

    Hast du bzw. ihr gute Buchtipps für einen C++ Einsteiger?

    Guck mal die Links in meiner Signatur und/oder die als wichtig markierten Threads im Forum an.

    Negativ aufgefallen sind bisher Bücher von Jürgen Wolf, viele Bücher aus dem Galileo Verlag und ich fürchte das Dirk Louis Buch ist auch schon oftmals negativ genannt worden.



  • Jos schrieb:

    Hast du bzw. ihr gute Buchtipps für einen C++ Einsteiger?

    Wenn du ein deutsches willst, nimmst du Der C++ Programmierer von Breymann. Wenn du allerdings gut mit englisch klar kommst, dann nimm den Primer 5th Edition von Moo.



  • out schrieb:

    Wenn du ein deutsches willst, nimmst du Der C++ Programmierer von Breymann. Wenn du allerdings gut mit englisch klar kommst, dann nimm den Primer 5th Edition von Moo.

    Ist das auch echt für Einsteiger wie mich? 😃



  • Jos schrieb:

    out schrieb:

    Wenn du ein deutsches willst, nimmst du Der C++ Programmierer von Breymann. Wenn du allerdings gut mit englisch klar kommst, dann nimm den Primer 5th Edition von Moo.

    Ist das auch echt für Einsteiger wie mich? 😃

    Ja, beide sind für C++ Anfänger. Natürlich lernst du C++ nicht in ein paar Monaten. Also darf so ein Buch auch ne ganze Weile in Anspruch nehmen (da du manches 10x lesen musst).



  • Jos schrieb:

    Hallo Shade of Mine.

    nein das weiß ich leider nicht... 😞

    Dann solltest du dringend anfangen das zu lernen.

    prog.cpp: In function ‘int main()’: 
     prog.cpp:17:12: error: conflicting declaration ‘std::string str’ 
          string str = tmp; 
                 ^ 
     prog.cpp:12:10: error: ‘str’ has a previous declaration as ‘char str’ 
          char str;
    

    Der erste Fehler hier ist

    error: conflicting declaration ‘std::string str’
    string str = tmp; 
    ‘str’ has a previous declaration as ‘char str’
    

    was koennte das heissen?



  • .. wurde schon einmal deklariert?



  • Jos schrieb:

    .. wurde schon einmal deklariert?

    Genau.

    Und was schliesst du daraus?



  • out schrieb:

    Jos schrieb:

    Hast du bzw. ihr gute Buchtipps für einen C++ Einsteiger?

    Wenn du ein deutsches willst, nimmst du Der C++ Programmierer von Breymann. Wenn du allerdings gut mit englisch klar kommst, dann nimm den Primer 5th Edition von Moo.

    Also ich lese momentan auch das Buch der C++ Programmierer und bin damit super zufrieden :), aber manchmal habe ich ein paar verständnis Probleme :p


Anmelden zum Antworten