Witam, próbuję rozdzielić równanie, na razie jego lewą część, na mniejsze kawałki. Napotkałem jednak problem przy usuwaniu ostatniego kawałka. Nie mam pojęcia gdzie jest błąd, zwłaszcza, że nie powinien występować. Z tego co wiem jeśli metodzie erase() poda się za dużo znaków do usunięcia to ta usunie tyle ile da rade. A tutaj błąd występuje ewidentnie pod sam koniec. Kod poniżej:
#include <iostream>
#include <conio.h>
#include <string>
#include <vector>
using namespace std;
int main() {
string rownanie = "2x^2+7x+6";
int i = 0;
vector <string> kawalki;
string element;
vector <char> znaki;
while (rownanie != "") {
i = 0;
element = "";
while (rownanie[i] != '+' && rownanie[i] != '-') {
element += rownanie[i];
i++;
}
cout << endl << rownanie << endl;
znaki.push_back(rownanie[i]);
kawalki.push_back(element);
rownanie.erase(0,i);
if (rownanie != "")rownanie.erase(0, 1);
}
_getch();
}