2014-03-27 105 views
0

按照提升documentation字符在UNIX系統上用於boost::filesystem::path內部值類型。但在Linux上,下面的代碼編譯並且也能正常工作。boost :: filesystem :: path在Linux機器上接受wstring

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機器上運行。這種行爲可以依靠嗎?

回答

1

path構築部在documentation你會發現:

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

0

See this part of the documentation

value_type是操作系統用來表示路徑名的字符類型的實現定義的typedef。描述爲返回常量字符串,常量wstring的,常量u16string或const u32string

成員函數被允許分別返回常量字符串&,常量wstring的&,常量u16string &,或const u32string &。

這是實現定義的。

相關問題