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