string.insert



  • hi!
    ich versuche grade in folgender weise die zeichen eines srings zu prüfen.
    also das programm soll jede stelle an der ein e vorkommt in einen vector speichern und danach vor jedem e ein E einfügen..

    #include <iostream.h>
    #include <string.h>
    #include <vector.h>
    
    int main()
      {
       string test="dies ist der Test string";
       int counter=0; //zähler der wegen der string vergrösserung gebraucht wird
       vector<int> V;
    
       for(int i=0;i<=test.length();i++) {
          if(test[i]=="e") {
             V.push_back(i);
            }
         }
       for(int j=0;j<=V.size();j++) {
          test.insert(V[j+counter],"E");
          counter+=1;
         }
    cout << test;
    
       return 0;
      }
    

    doch ich kriege beim ausführen immer einen schweren fehler von wegen bereichsübertritt..weiss einer warum oder wie ich das sonst machen kann?

    thx && cya



  • probiers mal so :
    for(int j=0;j<=V.size();j++) {
    test.insert(V[j]+counter,"E");
    counter+=1;
    }



  • JA KLAR!
    so müsste es gehen! ich idiot! das ist ja auch einleuchtend!!!!!
    danke man! ich werds morgen mal testen..

    cya



  • zunächst einmal, sollte das in sauberem C++ so aussehen

    #include <iostream>
      #include <string>
      #include <vector>
      using namespace std;
    

    EDIT: ich hab quatsch gemacht...sorry

    Mfg, smasher1985

    [ Dieser Beitrag wurde am 24.03.2003 um 21:15 Uhr von smasher1985 editiert. ]



  • 😞

    es geht imernoch nicht! immernoch der gleiche fehler.

    "Project Project1.exe raised exceptin class _STL::out_of_range with message 'Exception Object Address: 0xCB32C6'."

    HEELP!



  • hmm denke, du gehst eins drüber

    for(int j=0;j<V.size();j++) statt for(int j=0;j<=V.size();j++)
    und prüfe auf if(test[i]=='e') nicht auf "e"



  • jepp! danke! das wars


Anmelden zum Antworten