Problem mit substring und find
-
Bekomme immer ein:
terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr AbortedFinde aber den Logik Fehler nett aber vllt bin ich auch einfach nur Blind
string base::createxml(string *testdata) { string xml_data, xsd_temp, xml_temp; size_t end =0, start=0; while(start!=string::npos){ start = testdata->find("<xsd:complexType",end); end = testdata->rfind("</xsd:complexType>",start); cout << "start:" << start << "ende:" << end << endl; xsd_temp += testdata->substr(start,end - start); xml_temp += testdata->substr(end,end - testdata->find("<xsd:complexType",end)); } //create xml header xml_data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testdata>\n<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n"; xml_data += xsd_temp; xml_data +="</xsd:schema>"; xml_data += xml_temp; xml_data +="</testdata>"; return xml_data; }
-
Du solltest den Rückgabewert auf 'string::npos' überprüfen.
Und dein 2. substr ist falsch herum, d.h. negative Anzahl funktioniert nicht!Und zuletzt: warum übergibt du einen string-Zeiger und keinen "const string &"?