boost :: filesystem :: path接受linux机器上的wstring

时间:2014-03-27 10:35:17

标签: c++ boost boost-filesystem

根据提升documentation char在unix系统上使用boost::filesystem::path内部值类型。但是在linux上,以下代码编译并且也能正常工作。

const std::wstring &m_blobStore;
boost::filesystem::path dir(m_sharePath.begin(), m_sharePath.end());
cout<<dir.string(); // prints the value stored as wstring.

期望是,如果m_blobStore已经string而不是wstring,那么它应该适用于Linux机器。可以依赖这种行为。

2 个答案:

答案 0 :(得分:1)

documentationpath构造函数部分,您找到了:

template <class InputIterator>   path(InputIterator begin,
InputIterator end, const codecvt_type& cvt=codecvt());
  

效果:在路径名中存储内容[开始,结束]或来源。如果内容采用通用格式且通用格式为   操作系统的API不可接受,它们被转换为   原生格式。 [注意:对于ISO / IEC 9945和Windows实现,   通用格式已经可以作为原生格式接受,所以没有   执行泛型到本机转换。 - 后注]

     

备注:如果[begin,end]或source的值类型不是value_type,则转换由cvt执行。

因此,接受wstring对于每个文档都是正确的,并且它将在内部转换为value_type

答案 1 :(得分:0)

See this part of the documentation

  

value_type是一个实现定义的typedef,用于操作系统用来表示路径名的字符类型。

     

描述为返回const string,const wstring,const u16string或const u32string的成员函数被允许分别返回const string&amp;,const wstring&amp;,const u16string&amp;或const u32string&amp;。

这是实现定义的。