// Copyright Vladimir Prus 2004. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_CONVERT_HPP_VP_2004_04_28 #define BOOST_CONVERT_HPP_VP_2004_04_28 #include #if !defined(BOOST_NO_STD_WSTRING) #include #include #include #include // for mbstate_t #include #include #if defined(BOOST_NO_STDC_NAMESPACE) #include namespace std { using ::mbstate_t; } #endif namespace boost { /** Converts from local 8 bit encoding into wchar_t string using the specified locale facet. */ BOOST_PROGRAM_OPTIONS_DECL std::wstring from_8_bit(const std::string& s, const std::codecvt& cvt); /** Converts from wchar_t string into local 8 bit encoding into using the specified locale facet. */ BOOST_PROGRAM_OPTIONS_DECL std::string to_8_bit(const std::wstring& s, const std::codecvt& cvt); /** Converts 's', which is assumed to be in UTF8 encoding, into wide string. */ BOOST_PROGRAM_OPTIONS_DECL std::wstring from_utf8(const std::string& s); /** Converts wide string 's' into string in UTF8 encoding. */ BOOST_PROGRAM_OPTIONS_DECL std::string to_utf8(const std::wstring& s); /** Converts wide string 's' into local 8 bit encoding determined by the current locale. */ BOOST_PROGRAM_OPTIONS_DECL std::string to_local_8_bit(const std::wstring& s); /** Converts 's', which is assumed to be in local 8 bit encoding, into wide string. */ BOOST_PROGRAM_OPTIONS_DECL std::wstring from_local_8_bit(const std::string& s); namespace program_options { /** Convert the input string into internal encoding used by program_options. Presence of this function allows to avoid specializing all methods which access input on wchar_t. */ BOOST_PROGRAM_OPTIONS_DECL std::string to_internal(const std::string&); /** @overload */ BOOST_PROGRAM_OPTIONS_DECL std::string to_internal(const std::wstring&); template std::vector to_internal(const std::vector& s) { std::vector result; for (unsigned i = 0; i < s.size(); ++i) result.push_back(to_internal(s[i])); return result; } } } #else #include #include namespace boost{ namespace program_options{ BOOST_PROGRAM_OPTIONS_DECL std::string to_internal(const std::string&); template std::vector to_internal(const std::vector& s) { std::vector result; for (unsigned i = 0; i < s.size(); ++i) result.push_back(to_internal(s[i])); return result; } } } #endif #endif