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 Gedanken zu „C++: String in int, float, double und zurück konvertieren“

Schreibe einen Kommentar