Property tree - uzyskiwanie kilku wartosci z jednego klucza

Property tree - uzyskiwanie kilku wartosci z jednego klucza
0

Hej, uzywam INFO Parser z biblioteki boosta. Tworze obiekt property tree na podstawie pliku tekstowego. Za pomoca klucza dostaje sie do odpowiednich wartosci. Jednak mam taki plik tekstowy .txt ze dla jednego klucza sa 3 wartosci oddzielone spacjami:
klucz x1 x2 x3

boost::property_tree::ptree pt;
boost::property_tree::read_info("C:\NewFolder\plik.txt", pt);
string wartosc = pt.getstd::string("klucz");

W wyniku czego otrzymuje w zmiennej wartosc tylko x1. Co moge zrobic aby wczytal wszystie wartosci dla danego klucza do zmiennej string?

YU
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 6 lat
0

Property_tree zdefiniowano tak, że trzyma tylko jeden string per klucz:

Kopiuj
 typedef basic_ptree<std::string, std::string> ptree; 

Żeby dostać się do wszystkich wartości musisz samemu parsować string-a spod klucza. Tutaj dalsze szczegóły:
http://stackoverflow.com/questions/13072704/boost-property-tree-multiple-values-per-key


0

Probowalem to zaimplementowac w sposob z linku ale mam problem gdzie ktora definicja sie powinna znaleŹĆ. Rozumiem ze funkcja tree.get wywoluje jakies funkcje ktore sie znajduja w plikach .h i .cpp z boosta. Gdzie powinienem dodac szablonowa strukture translator_between oraz strukture low_high_value_translator żeby funkcje boosta mogly z nich korzystac?

0

zaimplementowalem ten kod jednak nie dziala, funkcja wywoluje sie funkcja boost::optional<external_type> get_value(const internal_type& str) a w argumencie posiada tylko pierwsza wartosc i tylko jednemu polu w structure przypisywana jest wartosc

YU
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 6 lat
0

Wszystko jedno gdzie to umieścisz. Zauważ, że struktura translator_between już istnieje w boost::property_tree, my chcemy jedynie ją wyspecjalizować częściowo po swojej stronie (tj. w swoich źródłach). Tutaj jest kompletne demko Boost.PropertyTree wraz z przykładem użycia struktury translator_between:
https://akrzemi1.wordpress.com/examples/parsing-xml/

EDIT: bez pokazania kodu będzie wróżenie z fusów.


edytowany 1x, ostatnio: yurai
0

http://codepad.org/pmkiqhnG - .h
http://codepad.org/BRg4ARCC - .cpp
http://codepad.org/wPHRflV8 - plik tekstowy w odpowienim folderze

Gdy wywoluje funkcje load to na koncu w obiekcie instance tylko jedno pole struktury jest uzupelnione pierwsza wartoscia 1998, a drugie jest puste a ja bym chcial zeby bylo 2346

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.