String vector konvertieren



  • Hallo,

    ich möchte einen "string" vector in einen "int" vector konvertieren.
    Bisher habe ich es mit stringstream versucht und google bemüht, leider ohne erfolg.

    vector<int> anz_ergebnis (anz.begin(), anz.end());
    

    bringt leider auch nicht den gewünschten erfolg.

    Wie kann man soetwas noch realisieren?



  • Hallo,

    Hast du schon in die FAQ geschaut?
    "Einmal zahl nach String und zurück"
    Wenn, was genau war denn dein Problem?



  • Ja in die FAQ habe ich geschaut, und folgendes zusammengeschustert.

    vector<int> Zahl;
    for(i=0;i < anz.size();i++)
     { 
        stringstream Str;
        Str << anz[i];
        Str >> Zahl[i];
        cout << Zahl[i] << endl;
     }
    

    Bei ausführung des codes wird mit "vector subscript out of range" abgebrochen.
    Das liegt wahrscheinlich daran, das Str nur die speicheradresse zurückgibt.

    Ich nutze den VC++



  • Nein, dass liegt daran dass der Vector Zahl null Elemente hat.



  • lass die andern für dich arbeiten:

    #include <boost/lexical_cast.hpp>
    #include <algorithm>
    #include <iterator>
    
    //...
    void foo (vector<string>& from, vector<int>& to)
    {
       transform (from.begin(), from.end(), back_inserter(to), boost::lexical_cast<int, string>);
    }
    
    //oder mit eigenem funktor, womöglich schneller:
    template <typename T>
    struct convert_to
    {
       T operator () (std::string const& src)
       {
          T dest;
          std::istringstream tmp(src);
          tmp >> dest;
          return dest;
       }
    };
    
    //...
    transform (from.begin(), from.end(), back_inserter(to), convert_to<int>());
    


  • Danke euch für die Hinweise / codebeispiele.

    @queer_boy : Meine frage hat nichts damit zu tun das andere für mich die arbeit machen, nur manchmal sieht man halt den wald vor lauter bäumen nicht.
    Oder man ist relativ neu in c++ unterwegs, und bleibt trotz intensiver suche stunden oder gar tagelang an solch einem problem hängen, wo man dann letztendlich das forum bemüht.



  • das war kein vorwurf, sondern nur die einleitung zu meinem codebeispiel 🙂 denn dank boost/der standardbibliothek musst du dich um solche sachen zum glück nicht kümmern. du hast dich ja wohl schon erkundigt (FAQ) - da ist fragen stellen ja wohl legitim! sorry, falls das falsch rüberkam.


Anmelden zum Antworten