itoa() unter Linux



  • Hi ich versuche eine Int.Variable in einen std::string umzuwandeln.
    Da bin ich auf die Funktion itoa() gestoßen blos leider gibt es die unter Linux nicht.
    Also wie kann ich zunter Linux eine int in einen std::string umwandeln.



  • http://www.cplusplus.com/ schrieb:

    Not defined in ANSI-C. Supported by some compilers.

    siehe: http://www.cplusplus.com/ref/cstdlib/itoa.html

    MfG Max



  • Mithilfe des Modulo-Operators (%) sollte man sich solch eine Funktion relativ schnell selber bauen können... zB so:

    char buffer[33]; //for a 32 bit int and base 10
    int value,temp,i=0;
    int base=10;
    
    value=45;
    temp=value;
    
    do
    {
      buffer[i]=(temp%base)+48; //ASCII-Null + Wert des Restes der Division
      temp/=10; //nächste Stelle
      i++;
    }while(temp);
    
    buffer[i+1]='\0';
    

    Ist ungetestet, aber so sollte es für die Basen 2 bis 10 ohne umbauten funktionieren, für größere Basen müsste man halt noch einen if{...}else{...} Zweig reinbauen.

    *edit* Code-Tags korrigiert, kommentare überarbeitet
    *edit2* Verdammt 🙂 Ich sehe gerade daß ich da nen Denkfehler habe... Bei meiner Lösung steht die niederwertigste Stelle ganz links... In meinem Beispiel würde ich also aus der "45" eine "54" machen. Aber ein bischen kann ja Guest-Nic auch selber machen *aus der Affäre zieh*



  • #include <sstream>
    #include <string>

    std::istringstream foo(deinint);
    std::string str(foo.str());



  • ich merk grad dass istringstream kein ctor für int hat.
    also stringstream benutzen und dann foo << deinint;


Anmelden zum Antworten