Impulse el problema del árbol de propiedades al convertir a Unicode

Ok, antes que nada no soy un desarrollador de C ++ por naturaleza; Me las arreglé para juntar algunas cosas y funciona bien, pero estoy seguro de que a través de los ojos de un experto parece basura =)

Así que tengo una aplicación gratuita que he creado que utiliza el Árbol de propiedades de las bibliotecas Boost. Desarrollé toda la aplicación (en VS2010) con el usoConjunto de caracteres de múltiples bytes ajuste. Decidí que era hora de revisar la aplicación para que sea compatible con Unicode, ya que hay algunas personas con conjuntos de caracteres complejos que me gustaría apoyar mejor.

Pasé por el tedioso proceso de cambiar todas las referencias y llamadas para usar cadenas anchas, todas las conversiones necesarias. Sin embargo, estoy completamente perplejo en un punto, los únicos dos errores de compilación que me quedan.

Ambos vienen destream_translator.hpp (/ boost / property_tree /), líneas 33 y 36 (como se indica a continuación):

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

El error en la línea 33 es:

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

..y el error en la línea 36 es:

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

Por lo que he podido caminar hacia atrás, viene desde dentro.stream_translator.hpp en última instancia, comenzando como una llamada para obtener un valor [por ejemplo, ptree.get ("some.path", "valor predeterminado aquí")]

Realmente no tengo ni idea de cómo resolver este problema y parece que no puedo encontrarlocualquier cosa en línea para ayudarme a entender cuál es exactamente el problema. Cualquier consejo o información sería muy apreciado.

EDITAR

Así que comenté todo lo relacionado con ptree hasta que se compilara, luego comencé a agregarlos nuevamente. Resulta que puedo llamar .get bien, es get_child donde aparece el error @ line 36 (aún no he hecho el otro proyecto, donde el problema de la cadena es).

Para simplificar las cosas, aquí está la secuencia efectiva de las llamadas, que están bien hasta que se llama a 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>

Respuestas a la pregunta(1)

Su respuesta a la pregunta