C++: String in int, float, double und zurück konvertieren



Um Strings in Zahlenwerte umzuwandeln, bietet C++ einige Standardfunktion an. Im Wesentlichen ist es int atoi(const char* str) und char *_itoa( int value,char *str, int radix ).
Am besten man schaut sich einfach den Code an.

// string
char string[] = "938";

// char -> int
int i = atoi( string );

// char -> double
double d = atof( string );

Die Umwandlung von Zahlen in Strings geht etwas aufwendiger.

std::string str = "";
int zahl1 = 32;
double zahl2 = 232.42;

// int -> char
char buff[10];
itoa(zahl1, buff, 10);
str = buff;

// double, float -> char
int decimal, sign;
str = _fcvt( zahl2, 7, &decimal, &sign );

Um die oberen Funktionen zu nutzen muss <stdlib.h> eingebunden werden.
Genauere Informationen zu den Funktionen kann man auf MSDN nachlesen.

Etwas schönere und komfortablere Lösung ist die Verwendung von Stream in Verbindung mit Templates.

#include <iostream>
#include <sstream>

template<class T> std::string toString(const T& t)
{
     std::ostringstream stream;
     stream << t;
     return stream.str();
}

template<class T> T fromString(const std::string& s)
{
     std::istringstream stream (s);
     T t;
     stream >> t;
     return t;
}

Damit kann man ganz angenehm arbeiten:

// string
char string[] = "938";

// string -> int 
int i = fromString<int>(string);

// string -> double
double d = fromString<double>(string);

// int -> string 
std::string str1 = toString<int>(i);

// double -> string
std::string str2 = toString<double>(d);

Viel Spaß damit! =)




5 Kommentare zu “C++: String in int, float, double und zurück konvertieren”

  1. joachimam 1. September 2010 um 23:38 Uhr

    Danke,
    dein Beitrag hat mich weiter gebracht als die 1247 Seiten in meinem C++ buch

  2. Maximam 1. September 2010 um 23:55 Uhr

    Hallo, Joachim!
    Freut mich, dass ich dir helfen konnte ;)

    Wie heißt das Buch?

  3. Sören Hentzschelam 27. März 2011 um 18:38 Uhr

    Vielen Dank, wirklich sehr praktisch, die Umwandlung von double in string konnte ich gerade sehr gut gebrauchen!

  4. Jürgen Hamelam 21. Oktober 2012 um 18:14 Uhr

    Vielen Dank, das war mehr als nur nützlich !!!! Das hat mir dutzende Stunden Arbeit eingespart. Nochmals Danke.

    Jürgen

  5. Marleigham 13. Dezember 2017 um 12:05 Uhr

    Und nach fünf Jahren ist dieser Artikel immernoch hilfreich. Danke dafür^^

Trackback URI | Kommentare als RSS

Einen Kommentar schreiben

XHTML: Du kannst folgende Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <sub> <sup>

Hinweis: Ich behalte mir das Recht vor solche Kommentare, die Beleidigungen oder rechtswidrige Inhalte beinhalten erst nach einer Editierung freizugeben oder kommentarlos zu löschen. Ähnliches gilt auch für Kommentare die offensichtlich nur der Suchmaschinenoptimierung dienen.