Zwiększ problem drzewa właściwości podczas konwersji do Unicode

Ok, po pierwsze nie jestem z natury deweloperem C ++; Udało mi się połączyć kilka rzeczy i działa dobrze, ale jestem pewien, że w oczach eksperta wygląda to na śmieci =)

Mam więc darmową aplikację, którą stworzyłem i która korzysta z drzewa właściwości z bibliotek Boost. Stworzyłem całą aplikację (w VS2010) z użyciemZestaw znaków wielobajtowych oprawa. Zdecydowałem, że nadszedł czas, aby przejść przez aktualizację aplikacji i obsługiwać Unicode, ponieważ jest kilka osób o złożonych zestawach znaków, które chciałbym lepiej obsługiwać.

Przeszedłem żmudny proces zmiany wszystkich referencji i wywołań do korzystania z szerokich łańcuchów, wszystkich niezbędnych konwersji. Jednak w pewnym momencie jestem całkowicie zakłopotany, jedyne dwa błędy kompilatora, które mi pozostały.

Oboje pochodząstream_translator.hpp (/ boost / property_tree /), wiersze 33 i 36 (jak wspomniano poniżej):

<code>template <typename Ch, typename Traits, typename E, typename Enabler = void>
struct customize_stream
{
    static void insert(std::basic_ostream<Ch, Traits>& s, const E& e) {
        s << e; //line 33
    }
    static void extract(std::basic_istream<Ch, Traits>& s, E& e) {
        s >> e; //line 36
        if(!s.eof()) {
            s >> std::ws;
        }
    }
};
</code>

Błąd w linii 33 to:

<code>Error   347 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'const std::wstring' (or there is no acceptable conversion)   {...}\boost_1_49_0\boost\property_tree\stream_translator.hpp    33  1   
</code>

..i błąd w linii 36 to:

<code>Error   233 error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::basic_istream<_Elem,_Traits>' (or there is no acceptable conversion) {...}\boost_1_49_0\boost\property_tree\stream_translator.hpp    36  1
</code>

Z tego, co udało mi się przejść wstecz, pochodzi z wnętrzastream_translator.hpp ostatecznie zaczynając jako wezwanie do uzyskania wartości [np. ptree.get („some.path”, „default value here”)]

Naprawdę nie mam pojęcia, jak rozwiązać ten problem i nie mogę go znaleźćbyle co online, aby pomóc mi zrozumieć, na czym dokładnie polega problem. Wszelkie wskazówki lub informacje byłyby bardzo mile widziane.

EDYTOWAĆ

Więc skomentowałem wszystko, co odnosi się do ptree, dopóki nie skompiluje się, a następnie zacząłem dodawać je z powrotem. Okazuje się, że mogę wywołać .get fine, to get_child, gdzie pojawia się błąd @ linia 36 (jeszcze nie zrobiłeś innego projektu gdzie jest problem z wstringiem).

Aby uprościć rzeczy, oto efektywna sekwencja wywołań, które są w porządku, dopóki nie zostanie wywołany get_child:

<code>boost::property_tree::ptree pt; 
boost::property_tree::read_xml("Config.xml", pt);
int iAppSetting = pt.get("config.settings.AppSetting",1); //<- works fine
ptree ptt;
ptt = pt.get_child("config.Applications"); //<- adding this line causes the line 36 error
</code>

questionAnswers(1)

yourAnswerToTheQuestion