manip.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 317 行 · 第 1/2 页
HPP
317 行
struct name##_type \ { \ typedef std::string string_type; \ string_type data; \ name##_type(const string_type& d): data(d) {} \ }; \ \ template <typename Stream> \ Stream& operator>>(Stream& s, const name##_type& m) \ { \ string_ios_manip<name##_tag, Stream>(s).set(m.data); \ return s; \ } \ \ template <typename Stream> \ Stream& operator<<(Stream& s, const name##_type& m) \ { \ string_ios_manip<name##_tag, Stream>(s).set(m.data); \ return s; \ } \ }#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \ inline detail::name##_type \ name(const std::string& s) \ { \ return detail::name##_type(s); \ } \ \ inline detail::name##_type \ name(const char* s) \ { \ return detail::name##_type(std::string(s)); \ } \ \ inline detail::name##_type \ name(char c) \ { \ return detail::name##_type(std::string(1, c)); \ }#else // defined(BOOST_NO_TEMPLATED_STREAMS)#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \ template <typename Char, typename Traits> \ inline detail::name##_type<Char, Traits> \ name(const std::basic_string<Char, Traits>& s) \ { \ return detail::name##_type<Char, Traits>(s); \ } \ \ inline detail::name##_type<char> \ name(char const* s) \ { \ return detail::name##_type<char>(std::basic_string<char>(s)); \ } \ \ inline detail::name##_type<wchar_t> \ name(wchar_t const* s) \ { \ return detail::name##_type<wchar_t>(std::basic_string<wchar_t>(s)); \ } \ \ inline detail::name##_type<char> \ name(char c) \ { \ return detail::name##_type<char>(std::basic_string<char>(1, c)); \ } \ \ inline detail::name##_type<wchar_t> \ name(wchar_t c) \ { \ return detail::name##_type<wchar_t>(std::basic_string<wchar_t>(1, c)); \ }#else // defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \ template <typename Char, typename Traits> \ inline detail::name##_type<Char, Traits> \ name(const std::basic_string<Char, Traits>& s) \ { \ return detail::name##_type<Char, Traits>(s); \ } \ \ template <typename Char> \ inline detail::name##_type<Char> \ name(Char s[]) \ { \ return detail::name##_type<Char>(std::basic_string<Char>(s)); \ } \ \ template <typename Char> \ inline detail::name##_type<Char> \ name(Char const s[]) \ { \ return detail::name##_type<Char>(std::basic_string<Char>(s)); \ } \ \ template <typename Char> \ inline detail::name##_type<Char> \ name(Char c) \ { \ return detail::name##_type<Char>(std::basic_string<Char>(1, c)); \ }#endif#define STD_TUPLE_DEFINE_MANIPULATOR(name) \ namespace detail \ { \ struct name##_tag; \ \ template <typename Char, typename Traits = std::char_traits<Char> > \ struct name##_type \ { \ typedef std::basic_string<Char, Traits> string_type; \ string_type data; \ name##_type(const string_type& d): data(d) {} \ }; \ \ template <typename Stream, typename Char, typename Traits> \ Stream& operator>>(Stream& s, const name##_type<Char,Traits>& m) \ { \ string_ios_manip<name##_tag, Stream>(s).set(m.data); \ return s; \ } \ \ template <typename Stream, typename Char, typename Traits> \ Stream& operator<<(Stream& s, const name##_type<Char,Traits>& m) \ { \ string_ios_manip<name##_tag, Stream>(s).set(m.data); \ return s; \ } \ } \#endif // defined(BOOST_NO_TEMPLATED_STREAMS) STD_TUPLE_DEFINE_MANIPULATOR(tuple_open) STD_TUPLE_DEFINE_MANIPULATOR(tuple_close) STD_TUPLE_DEFINE_MANIPULATOR(tuple_delimiter) STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(tuple_open) STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(tuple_close) STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(tuple_delimiter)#undef STD_TUPLE_DEFINE_MANIPULATOR#undef STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS#undef FUSION_STRING_OF_STREAM#undef FUSION_GET_CHAR_TYPE#undef FUSION_GET_TRAITS_TYPE}}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?