Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Int in String umwandeln

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.01.2006
    Beiträge
    10

    Int in String umwandeln

    Hallo Leutz!
    Wie kann ich ein Interger in ein String umwandeln?
    Student Elektrotechnik

  2. #2
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    itoa -> integer to ascii

    Gefunden im Netz:
    Code:
    /**
     * 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);
    }
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  3. #3
    Registrierter Benutzer
    Registriert seit
    16.01.2006
    Beiträge
    10
    Funktioniert dies auch unter C? Hab das vergessen dazu zuschreiben.
    Was bedeuten die 2 Doppelpunkte (: ?

    Sonst schon mal Danke!
    Student Elektrotechnik

  4. #4
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Das könntest du z.B. mit snprintf() machen:
    Code:
    int zahl=123;
    char text[12]; //12 Byte ist nur korrekt, wenn sizeof(int)==4
    snprintf(text,12,"%d",zahl);

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    @Boron: Unter C++ ist es einfacher und bequemer, mit sstreams zu arbeiten.

  6. #6
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    @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.
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  7. #7
    Registrierter Benutzer Avatar von Giuly
    Registriert seit
    28.04.2003
    Ort
    HB-Nord
    Beiträge
    201
    Code:
    #include <sstream>
    
    int a = 1337;
    std::ostringstream buf;
    buf << a;
    std::string b = buf.str();
    Der Vollständigkeit halber

    MfG

  8. #8
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von Giuly
    Code:
    #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?

  9. #9
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Zitat Zitat von BLUESCREEN3D
    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.
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •