[filesystem] : How to get a parametrized basic_string from filesystem::path
Hi, I am trying to modify an existing code to keep the possibility to use string or wstring, so I have changed the definition to parametrize it as shown below (Path inherits from path): template <class TChar> bool GetFileList(const std::basic_string<TChar>& i_strBaseDir, std::vector<std::basic_string<TChar> >& o_FileList) { boost::system::error_code ec; Path thePath(i_strBaseDir); boost::filesystem::directory_iterator iter(thePath, ec); if (! ec) { boost::filesystem::directory_iterator iter_end; for (; iter != iter_end; ++ iter) { boost::system::error_code ec; // This is to avoid an exception in case of any error if(!boost::filesystem::is_directory(iter->path(), ec)) //find file and not directory { std::basic_string<TChar> strFile = iter->path().????); // HOW TO DO IT o_FileList.push_back(strFile); } } } return (o_FileList.size() != 0); } My problem is with the following line : std::basic_string<TChar> strFile = iter->path().??????; I have solved like that (without testing it) : template <typename CharT, typename T> std::basic_string<CharT> string_cast(const T& r) { std::basic_ostringstream<CharT> stream; stream.imbue(std::locale::classic()); stream << r; return stream.str(); } std::basic_string<TChar> strFile = string_cast<TChar>(iter->path()); but since it uses some stream we might loose some performance. I have found another string_cast here : http://codereview.stackexchange.com/questions/1205/c-string-cast-template-fu... that might be better in terms of performance. Do you have some other suggestion ? Wouldn't be interesting to add a boost::string_cast that would allow to convert from templated methods from/to string/wstring ? Thanks
participants (1)
-
Vincent R.