char-array in int umwandeln



  • mein Programm erhält als Parameter-Übergabe Wert in folgendem Stil:

    12345-67

    (wird als char[] übergeben)

    Wollte nun fragen wie ich 12345 in eine int-Variable speichern kann.
    Die Stelle wo das Minus ist kenn ich, aber wie ich den Rest in ne Variable krieg nicht.

    CU Samptron



  • Ich hab zwar keinen Code, würd das Char-Array aber in einen std::string packen, das Minus entfernen und dann atoi() aufrufen.

    mfg
    Glamdring



  • Ungetestet und ohne Fehlerbehandlung:

    #include <cstdlib>
    
    void DeineFunktion(char str[])
    {
        long val = std::strtoul(str, 0, 10);
        ...
    }
    

    strtoul hört einfach da auf zu lesen, wo es nicht weiter kommt -> wahrscheinlich bei "-". Wenn du nicht sicher bist, dass die Eingabestrings immer gültig sind, kannst du auch noch ein Bisschen überprüfen - strtoul ist relativ mächtig, siehe deine Lieblingsreferenz dafür 😉



  • Hi!
    Danke für den Hinweis.
    Aber long Variabeln sollen wir nicht benutzen und auch leider nur "bekannte" Funktionen. Hab das ganze so gelöst:

    int multiplikator(int x)
    {
     int multi=1;
     const int fact=10;
     for(int i=0;i<x;i++)
     {
      multi=multi*fact;
     }
     return (multi);
    }
    
    // Ausschnitt aus meiner anderen Funktion
    
      for(int i=0; i<minuspos; i++)
      {
       int count=minuspos-i-1;
       int multi=multiplikator(count);
       Nummer=Nummer+(multi*(arg[i]-48));
      }
    
    // Ende des Ausschnitts
    

    Also jede Ziffer wird mit dem Entsprechen Multiplikator malgenommen und
    anschließend alles zusammen addiert:
    BSP: 12345-67

    110000
    2
    1000
    3* 100
    4* 10
    5* 1

    12345 --> INT! 😃

    Ist zwar heavy, funzt aber wunderbar!

    CU Samptron



  • Naja, wenn du jetzt statt 48 noch '0' verwendest, ist es vermutlich sogar portabel 😉



  • ja klar, will aber leider nicht den ASCII-Wert


Anmelden zum Antworten