Witam. Mam gigantyczny plik xml w którym mam duuuużo linii tego typu:
<way id=\"43384691\" version=\"2\" timestamp=\"2009-11-11T12:24:47Z\" uid=\"190309\" user=\"szilderus\" changeset=\"3089569\">
<nd ref=\"546479508\"/>
<nd ref=\"546479541\"/>
<nd ref=\"546479773\"/>
<nd ref=\"546479677\"/>
<nd ref=\"546479508\"/>
<tag k=\"addr:housenumber\" v=\"10\"/>
<tag k=\"building\" v=\"yes\"/>
</way>
Teraz chcę sobię wybrać wszystkie liczby które są w ref="ta_liczba". Robię to za pomocą poniższej funkcji
vector <string> Parser::get_value(string name, string line)
{
vector <string> result;
int i, end;
while(line.find(name) != string::npos)
{
i = line.find(name) + name.size() + 2;
end = i;
while(line[end] != '"')
{
end++;
}
result.push_back(line.substr(i, end-i));
line.erase(line.begin(), line.begin()+end);
}
return result;
}
//i wywolanie w glownym programie
vector <string> nds = this->get_value("ref", new_line);
//tu cos robie
nds.clear();
new_line.clear();
Gdy robię to w osobnym testowym pliku.cpp dla tego jednego przykładu powyżej, ładnie znajduje te liczby i wypisuje ale gdy wlepiam to do głównego programu wywala mi błąd
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_S_create
Przerwane
Co się dzieje?