根据提升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机器。可以依赖这种行为。
答案 0 :(得分:1)
在documentation的path
构造函数部分,您找到了:
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;。
这是实现定义的。