Hello,
 
I want to use the Boost.Filesystem library in my Win32 application. I've stumbled upon a problem which may very well be my misunderstanding of how to use the library but reading the documentation doesn't clear up my confusion.
 
The user choses a path from a native UI and a bfs::path is constructed with the native name checker. This path needs to be persisted so I call the string() method which according to the documentation "Returns: The contents of m_name, formatted according to the rules of the generic path string grammar." I figured this string would be acceptable to the bfs::path constructor without specifying native because it's in the corrct grammar but I get an exception thrown. Here's a stripped down version of my code:
 
#include <iostream>
#include <iterator>
#include <boost/filesystem/operations.hpp>
namespace bfs = boost::filesystem;
int main()
{
 try
 {
  // Path constructed from a native UI so constructed with native
  bfs::path myPath("C:/autoexec.bat",bfs::native);
  // Persist to grammar conformant string
  std::string persisted = myPath.string();
  // Recreate from persisted string - *THROWS EXCEPTION*
  bfs::path otherPath(persisted);
 }
 catch(const std::exception& e)
 {
  std::cout << e.what() << std::endl;
 }
 return 0;
}
 
The exception string is "boost::filesystem::path: invalid name "C:" in path: "C:/autoexec.bat""
 
Can someone explain how I should be doing this please?
 
Thanks,
 
Pete