int wert aus string auslesen



  • Hi,
    also: ich lese eine Zeile aus einer datei ein, zbsp.: "wert der zeile: 23"
    wie kriege ich jetzt diese zahl 23 aus der zeile raus???

    Danke, Danke!
    mfg hares



  • string t("wert der zeile: 23");
    
    string::size_type pos;     // Zum speichern der gefundenen Position
    
    pos = t.find_last_of(":"); // Letzten : suchen
    if(pos == string::npos)    // Prüfen ob es einen gab
       NichtGefunden
    
    string zahl;               
    zahl = t.substr(pos+1);   // Zahl extrahieren ( 1 position hinter dem :)
    
    int i = atoi(zahl);
    


  • Hallo,
    prinzipiell ok, aber unnötig langsam und nicht vergessen: atoi erwartet einen const char* nicht einen std::string:

    string Zeile("wert der zeile: 23");
    string::size_type pos = Zeile.find(":");    
    if (pos != string::npos)
    {
        int i = atoi(Zeile.c_str()+pos+1);
    }
    

    Wenn das Format der Zeile nicht ganz so klar ist, hilft eine Suche nach Ziffern:

    const char* const DIGITS = "0123456789";
    string Zeile("wert der zeile: 23");
    string::size_type pos = Zeile.find_first_of(DIGITS);    
    if (pos != string::npos)
    {
        int i = atoi(Zeile.c_str()+pos);
    }
    


  • wobei der text vorne dran meist auch noch interessant ist



  • wie kriege ich jetzt diese zahl 23 aus der zeile raus???

    wobei der text vorne dran meist auch noch interessant ist

    😕



  • stringstream str(string("wert der zeile: 23"));
    string text;
    int zahl;
    while(!str.eof())
    {
       char c = str.get();
       if(isdigit(c))
       {   
          str.putback(c);
          str >> zahl;   
       }
       else
       {
          text+=c;
       }
    }
    

    oder so 🙂



  • while(!str.eof())

    Nein. Auch nicht bei stringstreams.
    So:

    while(str.get(c))
    {
    ...
    }
    

Anmelden zum Antworten