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::ptree pt;
boost::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?

0

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

 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

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.

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1