Problem mit substring und find



  • Bekomme immer ein:

    terminate called after throwing an instance of 'std::out_of_range'
      what():  basic_string::substr
    Aborted
    

    Finde 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 &"?


Anmelden zum Antworten