PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Int in String umwandeln



The_Akki
16-01-2006, 16:39
Hallo Leutz!
Wie kann ich ein Interger in ein String umwandeln?

Boron
16-01-2006, 16:46
itoa -> integer to ascii

Gefunden im Netz:
/**
* C++ version std::string style "itoa":
*/

std::string itoa(int value, unsigned int base) {
const char digitMap[] = "0123456789abcdef";
std::string buf;

// Guard:
if (base == 0 || base > 16) {
// Error: may add more trace/log output here
return buf;
}

// Take care of negative int:
std::string sign;
int _value = value;

// Check for case when input is zero:
if (_value == 0) return "0";

if (value < 0) {
_value = -value;
sign = "-";
}

// Translating number to string with base:
for (int i = 30; _value && i ; --i) {
buf = digitMap[ _value % base ] + buf;
_value /= base;
}
return sign.append(buf);
}

The_Akki
16-01-2006, 19:23
Funktioniert dies auch unter C? Hab das vergessen dazu zuschreiben.
Was bedeuten die 2 Doppelpunkte (::) ?

Sonst schon mal Danke!

BLUESCREEN3D
16-01-2006, 19:53
Das könntest du z.B. mit snprintf() machen:

int zahl=123;
char text[12]; //12 Byte ist nur korrekt, wenn sizeof(int)==4
snprintf(text,12,"%d",zahl);

Joghurt
16-01-2006, 20:38
@Boron: Unter C++ ist es einfacher und bequemer, mit sstreams zu arbeiten.

Boron
16-01-2006, 21:18
@Joghurt
Da merkst du mal wie lange ich nix mehr mit C++ gemacht habe :).
Die nette Funktion habe ich halt im Netz geklaut und nicht getestet.

Giuly
17-01-2006, 12:08
#include <sstream>

int a = 1337;
std::ostringstream buf;
buf << a;
std::string b = buf.str();

Der Vollständigkeit halber :)

MfG

BLUESCREEN3D
17-01-2006, 17:59
#include <sstream>

int a = 1337;
std::ostringstream buf;
buf << a;
std::string b = buf.str();

Geht das eigentlich auch irgendwie ohne den Umweg über ostringstream?

panzi
20-01-2006, 20:38
Geht das eigentlich auch irgendwie ohne den Umweg über ostringstream?
boost hat ein lexical_cast<T>:
http://www.boost.org/libs/conversion/lexical_cast.htm

Aber das ist nicht nur C++, das braucht ebenauchnoch die zusäzliche boost lib.