Impulsione o problema da árvore de propriedades ao converter para Unicode

Ok, em primeiro lugar eu não sou um desenvolvedor de C ++ por natureza; Eu consegui juntar algumas coisas e funciona bem, mas tenho certeza que através dos olhos de um especialista parece lixo =)

Então eu tenho um aplicativo freeware que eu fiz, que usa Property Tree das bibliotecas Boost. Eu desenvolvi o aplicativo inteiro (no VS2010) com o UseConjunto de Caracteres Multi-Byte configuração. Eu decidi que era hora de passar e atualizar o aplicativo para suportar Unicode, pois há algumas pessoas com conjuntos de caracteres complexos que eu gostaria de oferecer melhor suporte.

Eu passei pelo tedioso processo de alterar todas as referências e chamadas para usar strings largos, todas as conversões necessárias. No entanto, estou completamente perplexo em um ponto, os dois únicos erros de compilador que me restaram.

Ambos vêm destream_translator.hpp (/ boost / property_tree /), linhas 33 e 36 (conforme indicado abaixo):

<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>

O erro na linha 33 é:

<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>

..e o erro na linha 36 é:

<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>

Do que eu fui capaz de andar de costas, está vindo de dentrostream_translator.hpp finalmente começando como uma chamada para obter um valor [por exemplo, ptree.get ("some.path", "valor padrão aqui")]

Eu realmente não tenho absolutamente nenhuma idéia de como resolver este problema e não consigo encontrarqualquer coisa on-line para me ajudar a entender o que exatamente é o problema. Qualquer dica ou informação seria muito apreciada.

EDITAR

Então eu comentei tudo relacionado ao ptree até que ele compilasse, então comecei a adicioná-los de volta. Acontece que eu posso chamar .me bem, é get_child onde o erro @ linha 36 aparece (ainda não fiz o outro projeto, onde o problema de wstring é).

Para simplificar as coisas, aqui está a sequência efetiva das chamadas, que são ótimas até que get_child seja chamado:

<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