String auslesen / Array



  • Hallöchen!

    Ich will, aus einem string z.B. 1+2*3-4/6 nur die Zahlen auslesen und in ein Array schreiben!
    Hier ist meine Überlegung:

    int Zahlen(string st_Gleichung)
    {
    stringstream ss1,ss2;
    string st_zahl;
    int k=0,m=0, x,temp,a=0;
    int zahl;
    ss1<<st_Gleichung.length();
    ss1>>x;
    char such_zeichen[] = "/*+-";
    int Zeichenarray[x];
    int Zahlenarray[x];
    do
    {
    pos =st_Gleichung.find_first_of(such_zeichen, pos + 1);
    cout << "Zeichen an Position: ";
    cout << pos << endl; //ausgabe nur für testzwecke
    Zeichenarray[k]=pos;
    k++;
    }while(pos != -1);
    system("pause");
    //int b=Zeichenarray[0];
    int b;

    for (int i=0; x>i; i++)
    {
    cout << "a= "<< a<<endl;
    cout << "b= " << b<< endl;
    st_zahl=st_Gleichung.substr(a,b);
    a=Zeichenarray[i];
    b=Zeichenarray[i]+1;

    ss2<<st_zahl;
    ss2>>zahl;
    cout<<i<< ". Zahl: " << zahl <<endl;
    Zahlenarray[m]=zahl;
    m++;
    temp=Zeichenarray[i];
    //cout<<temp;
    if (temp==-1) break;
    }
    for (int n = 0; n<=x ;n++)//test
    {
    cout <<"Zahlenarray "<< Zahlenarray[n] <<endl;
    }
    system("pause");
    }

    Mach das ganze Sinn? Oder habt Ihr bessere Ideen?
    Vielen lieben Dank schon mal!

    Valena



  • Valena schrieb:

    Ich will, aus einem string z.B. 1+2*3-4/6 nur die Zahlen auslesen und in ein Array schreiben!

    Probiers mal so:

    #include <string>
    #include <strstream>
    using namespace std;
    
    int main()
    {
        unsigned Zahlenarray[5];  
        // unsigned, weil minus Vorzeichen oder Subtraktion hier (noch!) nicht geht .
        char Zeichenarray[4];
        // Zahlenarray, Zeichenarray - besser Vector<unsigned>, Vector<char>
        string a("1+2*3-4/6");
        istrstream b(a.c_str());
    
            for (int i = 0; b.good(); i++)
            {        
                    b  >> ws >> Zahlenarray[i]; 
                    b  >> ws >> Zeichenarray[i];
            }   
    
            return 0;
    }
    

    mfg


Anmelden zum Antworten