Integer in String konvertieren



  • Hallo zusammen,

    ich möchte gerne einen Integer in einen String konvertieren, bekomme es aber leider nicht hin. Und dabei habe ich schon viel ausprobiert 😮

    Hier sind die Deklarationen meiner Variabelen:

    #include <string>
    using namespace std;
    
    int int_lX = 15354;
    string string_lX;
    

    Kann mir jemand auf die Sprünge helfen?

    Vielen Dank.

    Grüße

    datatom



  • [cpp]
    #include <sstream>

    int _ToInt( string &s )
    {
    int i;
    stringstream ss( s );
    ss >> i;
    return i;
    }



  • Entweder so:

    string convertInt(int number)
    {
       stringstream s;// string Stream erzeugen
       s<< number;// Zahl hinzufügen
       return s.str();// string zurückgeben
    }
    

    oder mit boost:

    #include <boost/lexical_cast.hpp>
    
    string s = boost::lexical_cast<string>( number );
    


  • hi schrieb:

    int _ToInt( string &s )

    Nach einem Unterstrich darf man doch keine Grossbuchstaben haben. Die sind für die Implementierung reserviert.



  • Schau mal in der FAQ, das ist eines der häufigsten Themen hier.



  • EOutOfResources schrieb:

    hi schrieb:

    int _ToInt( string &s )

    Nach einem Unterstrich darf man doch keine Grossbuchstaben haben. Die sind für die Implementierung reserviert.

    Gilt das nicht nur für den Anfang? Also z.B. für _IntToInteger. Ich dachte Variabeln wie Int_To_Integer oder MY_CLASS_INTEGER ist erlaubt?

    Korrigier mich, falls ich falsch liege (bin mir jetzt auf einmal nicht mehr sicher).



  • icarus2 schrieb:

    EOutOfResources schrieb:

    hi schrieb:

    int _ToInt( string &s )

    Nach einem Unterstrich darf man doch keine Grossbuchstaben haben. Die sind für die Implementierung reserviert.

    Gilt das nicht nur für den Anfang? Also z.B. für _IntToInteger. Ich dachte Variabeln wie Int_To_Integer oder MY_CLASS_INTEGER ist erlaubt?

    Korrigier mich, falls ich falsch liege (bin mir jetzt auf einmal nicht mehr sicher).

    Du liegst richtig.
    Die Regel lautet:
    - keine doppelten Unterstriche
    - keine führenden Unterstriche gefolgt von Großbuchstaben
    - überhaupt keine führenden Unterstriche im globalen namespace



  • Was ich nicht so ganz verstehe: Int in einen String umwandeln bzw. umgekehrt ist doch so wichtig und man muss es so oft anwenden (zeigt sich ja allein darin, dass es so viele Faq-Themen dazu gibt), warum gibt es dann nicht einfach eine Funktion z.B:

    string s = "Hallo";
    int i = s.toInt( );
    int j = 1;
    string a.fromInt( j );
    

    ?



  • Weekends schrieb:

    Was ich nicht so ganz verstehe: Int in einen String umwandeln bzw. umgekehrt ist doch so wichtig und man muss es so oft anwenden (zeigt sich ja allein darin, dass es so viele Faq-Themen dazu gibt), warum gibt es dann nicht einfach eine Funktion z.B:

    string s = "Hallo";
    int i = s.toInt( );
    int j = 1;
    string a.fromInt( j );
    

    ?

    Gibt es. In den C-Bibliotheken gibts atoi, itoa und ähnliche. In boost gibts lexical_cast. Das Problem ist nur, dass man das nicht so einfach konvertieren kann, wenn locales ins Spiel kommen (Dezimalpunkt oder -komma, Tausenderpunkte oder nicht, ...)



  • Hm, das klingt logisch, aber auch wieder nicht, denn wenn der Benutzer/Programmierer leichtfüßig "0,1" statt "0.1" verwendet, dann fällt das doch in die Spalte Bedienungsfehler?
    In Qt gibt es QString, was eben diese Funktionen (toInt(), fromInt(), toShort(), usw.) besitzt. Das ist etwas, was ich wirklich vermissee, was string angeht...

    Von itoa usw. wurde mir afair aber immer abgeraten. 😮



  • Weekends schrieb:

    Was ich nicht so ganz verstehe: Int in einen String umwandeln bzw. umgekehrt ist doch so wichtig und man muss es so oft anwenden (zeigt sich ja allein darin, dass es so viele Faq-Themen dazu gibt)...

    Ist es so wichtig? Braucht man es so oft?
    Ich für meinen Teil habe sogut wie nie die Situation, dass ich einen String in ein int konvertieren muss oder umgekehrt.



  • icarus2 schrieb:

    Entweder so:
    [cpp]
    string convertInt(int number)
    {
    stringstream s;// string Stream erzeugen
    s<< number;// Zahl hinzufügen
    return s.str();// string zurückgeben
    }

    Habe die 1. Variante von icarus2 genommen. Klappt. Danke 😃 😃

    Grüße

    datatom



  • Im neuen C++-Standard gibt es übrigens std::to_string() .



  • inter2k3 schrieb:

    Weekends schrieb:

    Was ich nicht so ganz verstehe: Int in einen String umwandeln bzw. umgekehrt ist doch so wichtig und man muss es so oft anwenden (zeigt sich ja allein darin, dass es so viele Faq-Themen dazu gibt)...

    Ist es so wichtig? Braucht man es so oft?
    Ich für meinen Teil habe sogut wie nie die Situation, dass ich einen String in ein int konvertieren muss oder umgekehrt.

    Kommt natürlich drauf an, was man programmiert... Wenn man cout verwendet, dann braucht man es z.B nicht; dagegen, wenn man eine Funktion schreibt, in der cout aufgerufen wird, damit man gleichzeitig den Output noch in eine Logfile schreiben kann, dann braucht man es schon. Oder wenn man Werte aus einer Datei auslesen will,...
    Ich brauche es relativ oft und scheine dabei nicht der einzige zu sein 😛



  • Natürlich braucht man diese Funktionalität oft genug, damit sie einen Platz in der Standardbibliothek verdient. Dem wird mit C++11 zum Glück endlich Rechnung getragen...


Anmelden zum Antworten