niXman
niXman

Reputation: 1758

boost::filesystem::path(std::wstring) throw exception

this code:

boost::filesystem::is_directory("/usr/include");

work fine.

both this code:

boost::filesystem::is_directory(L"/usr/include");

throw an exception:

terminate called after throwing an instance of 'std::runtime_error'
what(): locale::facet::_S_create_c_locale name not valid

OS - Linux Mint

boost-1.43

gcc-4.6.0

Upvotes: 2

Views: 2225

Answers (1)

Artyom
Artyom

Reputation: 31243

  1. Don't use wide strings on Linux. You don't need them..
  2. What happens that it tries to convert wide string to normal one and for this creates a locale and probably this locale is not configured in your system.

    Bring output of commands:

    locale 
    locale -a
    
  3. GCC-4.6 wasn't released yet ;-), check if this works with ordinary compiler. Probably libstdc++ wasn't build well.

Upvotes: 1

Related Questions