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 + -
显示快捷键?