Char to int/float



  • Hallo,

    habe einen String in Teilstrings zerlegt und möchte nun die Teilstrings in int und float zahlen konvertieren.
    Dachte schon ihn wieder zurück zu konvertieren in string und dann atoi/atof benutzen, aber es muss doch auch von char to int/float gehen.
    Irgendwie bekomme ich das nicht hin.

    Kann mir dann mal einer bitte helfen??

    mfg ahl



  • wie sehen denn deine Teilstrings aus? sind das wirklich char's? oder auch strings?

    Wenn es chars sind, kannst du isnumeric() und (ch - '0') verwenden (es sei denn, du muß exostische Zeichensätze unterstützen...)



  • Sie sehen so aus:

    char *Temp, *Druck, *Feuchte, *Windr;
    float Temperatur, Luftdruck, Feuchte1;
    int Windrichtung;
    String com; // wird kommt der string von der com1
    char zahl[17];

    strcpy(zahl,com.c_str());

    Temp=strtok (zahl, ","); //Diese Werte möchte ich je in einer Edit Komponente
    Druck=strtok (NULL, ","); //anzeigen und brauch sie aber auch noch für eine
    Feuchte=strtok (NULL, ","); //Datenbank.
    Windr=strtok (NULL, ",");

    Möchte Temp,Druck,Feuchte,Wind in Edit anzeigen lassen, es geht so, es soll aber nur int oder float werte zugelassen sein.



  • Den Befehl isnumeric() kann ich in der Hilfe nicht finden (Borland Builder C++ 5.0 Standart).



  • sind ja doch strings - also auf NULL testen, und atoi / atof.

    isnumeric()

    Sorry, das Teiol was ich meinte heißt "isdigit()" 🙄 brauchst du aber in deinem Fall nicht



  • sscanf(com.c_str(), "%f,%f,%f,%d", &Temperatur, &Luftdruck, &Feuchte1, &Windrichtung);
    


  • [cpp]
    #include "boost/lexical_cast.hpp"

    int main(int argc, char * argv[])
    {
    using boost::lexical_cast;
    using boost::bad_lexical_cast;

    std::vector<float> args;

    while(*++argv)
    {
    try
    {
    args.push_back(lexical_cast<float>(*argv));
    }
    catch(bad_lexical_cast &)
    {
    args.push_back(0);
    }
    }
    ...
    }[/cpp]

    mfg JJ



  • Hallo

    Mit den Befehl isdigit() kann mein Borland auch nichts angfangen, aber das von
    0xdeadbeef mit sscan funktioniert sehr gut.

    Schon mal vielen Dank für die Hilfe.

    mfg carsten


Anmelden zum Antworten