青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-167  評論-8  文章-0  trackbacks-0

Source

#include <cstddef>

#include <string>

#include <typeinfo>

//#include <boost/config.hpp>

#include <boost/limits.hpp>

#include <boost/throw_exception.hpp>

#include <boost/type_traits/is_pointer.hpp>

#include <sstream>

 

 

 

//

namespace kimi_boost

{

    // exception used to indicate runtime lexical_cast failure

    class bad_lexical_cast : public std::bad_cast

    {

    public:

        bad_lexical_cast() :

        source(&typeid(void)), target(&typeid(void))

        {

        }

        bad_lexical_cast(

           const std::type_info &source_type,

            const std::type_info &target_type) :

            source(&source_type), target(&target_type)

        {

        }

        const std::type_info &source_type() const

        {

            return *source;

        }

        const std::type_info &target_type() const

        {

            return *target;

        }

        virtual const char *what() const throw()

        {

            return "bad lexical cast: "

                   "source type value could not be interpreted as target";

        }

        virtual ~bad_lexical_cast() throw()

        {

        }

    private:

        const std::type_info *source;

        const std::type_info *target;

    };

 

 

   

    namespace detail // stream wrapper for handling lexical conversions

    {

        template<typename Target, typename Source>

        class lexical_stream

        {

        private:

            typedef char char_type;

                     std::basic_stringstream<char_type> stream;

 

        public:

            lexical_stream()

            {

                stream.unsetf(std::ios::skipws);

                if(std::numeric_limits<Target>::is_specialized)

                    stream.precision(std::numeric_limits<Target>::digits10 + 1);

                else if(std::numeric_limits<Source>::is_specialized)

                    stream.precision(std::numeric_limits<Source>::digits10 + 1);

            }

 

            ~lexical_stream()

            {

            }

 

                     //Source類型輸入到流中

            bool operator<<(const Source &input)

            {

                return !(stream << input).fail();

            }

 

                     //把流轉換為Target類型輸出

            template<typename InputStreamable>

            bool operator>>(InputStreamable &output)

            {

                            return !boost::is_pointer<InputStreamable>::value &&

                       stream >> output &&

                       stream.get() ==

                           std::char_traits<char_type>::eof();

            }

 

                     //string特化

                     template<>

            bool operator>>(std::string &output)

            {

                output = stream.str();

                return true;

            }

        };//class lexical_stream

    }//namespace detail

 

 

    namespace detail

    {

        template<class T>

        struct array_to_pointer_decay

        {

            typedef T type;

        };

 

        template<class T, std::size_t N>

        struct array_to_pointer_decay<T[N]>

        {

            typedef const T * type;

        };

    }

 

    template<typename Target, typename Source>

    Target lexical_cast(const Source &arg)

    {

        typedef typename detail::array_to_pointer_decay<Source>::type NewSource;

 

        detail::lexical_stream<Target, NewSource> interpreter;

        Target result;

 

        if(!(interpreter << arg && interpreter >> result))

                     boost::throw_exception(bad_lexical_cast(typeid(NewSource), typeid(Target)));

        return result;

    }

}

Test code

void kimi_lexical_cast_test()

{

       try

       {

              int i=kimi_boost::lexical_cast<int>("4365");

              float f=kimi_boost::lexical_cast<float>("234.546");

              double d=kimi_boost::lexical_cast<double>("24534.546345");

              std::string s=kimi_boost::lexical_cast<std::string>(24534.546345);

       }

       catch(kimi_boost::bad_lexical_cast& e)

       {

              cout<<e.what()<<endl;

       }

 

       try{

              int i2=kimi_boost::lexical_cast<int>("0.335");

       }

       catch(kimi_boost::bad_lexical_cast& e)

       {

              cout<<"source type: "<<e.source_type().name()<<endl;

              cout<<"target type: "<<e.target_type().name()<<endl;

              cout<<e.what()<<endl;

       }

}

Output

source type: char const *

target type: int

bad lexical cast: source type value could not be interpreted as target

posted on 2010-05-27 10:37 老馬驛站 閱讀(1280) 評論(0)  編輯 收藏 引用 所屬分類: Boost
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美综合| 香蕉久久a毛片| 欧美国产日韩视频| 亚洲精品一区在线观看| 亚洲韩国精品一区| 欧美精品久久久久久久免费观看| 99pao成人国产永久免费视频| 亚洲国产一区二区三区高清| 欧美日产在线观看| 亚洲免费在线视频一区 二区| 亚洲一区亚洲二区| 狠狠色噜噜狠狠狠狠色吗综合| 久久只有精品| 欧美精品在线观看播放| 亚洲欧美韩国| 欧美亚洲一区三区| 亚洲欧洲一区二区三区在线观看| 亚洲激情综合| 国产欧美一区二区精品秋霞影院| 欧美日韩久久不卡| 午夜精品久久久久久99热软件| 欧美影院成人| 日韩午夜av在线| 亚洲欧美综合另类中字| 亚洲韩国精品一区| 亚洲制服欧美中文字幕中文字幕| 极品少妇一区二区三区| 日韩午夜视频在线观看| 国内久久婷婷综合| 日韩视频在线观看国产| 好吊日精品视频| 99re6这里只有精品视频在线观看| 国产精品日本一区二区| 亚洲第一二三四五区| 国产精品日韩一区| 亚洲国产一二三| 国产一区二区三区四区老人| 亚洲国产日韩欧美综合久久| 国产免费一区二区三区香蕉精| 亚洲成人直播| 国产一级久久| 亚洲网友自拍| 亚洲欧洲在线观看| 久久九九99视频| 亚洲欧美在线观看| 欧美精品一二三| 欧美刺激午夜性久久久久久久| 国产精品人人做人人爽| 亚洲三级影院| 亚洲黄色毛片| 久久久欧美一区二区| 欧美怡红院视频| 欧美亚洲成人免费| 亚洲精品视频免费观看| 亚洲国产一区在线| 久久久国产91| 久久视频国产精品免费视频在线| 国产精品多人| 一本久道久久综合狠狠爱| 亚洲国产日韩一级| 久久一区免费| 蜜臀久久久99精品久久久久久| 国产午夜精品久久| 欧美一级久久| 久久精品91久久久久久再现| 国产精品高精视频免费| 一区二区三区欧美| 亚洲男人的天堂在线观看| 欧美日韩一区二区三区四区在线观看 | 夜夜精品视频| 亚洲私人黄色宅男| 欧美系列精品| 亚洲免费一在线| 欧美一区深夜视频| 国产婷婷一区二区| 久久精品一级爱片| 老司机一区二区三区| 亚洲国产日韩综合一区| 免费观看日韩| 亚洲精品一区二区三区不| 一区二区三区国产在线观看| 欧美视频第二页| 亚洲欧美日韩一区二区三区在线| 欧美在线黄色| 一区二区三区中文在线观看 | 一本色道久久88综合亚洲精品ⅰ| 一本色道久久综合亚洲二区三区| 欧美日本一区| 亚洲女同在线| 欧美gay视频| 一二三区精品| 国产日韩欧美日韩| 久久青青草原一区二区| 亚洲国产电影| 午夜一区二区三区不卡视频| 国产亚洲日本欧美韩国| 蜜臀av性久久久久蜜臀aⅴ| 亚洲免费观看| 久久久久久欧美| 亚洲国产精品尤物yw在线观看 | 欧美专区第一页| 欧美激情一区二区三区在线视频观看| 9人人澡人人爽人人精品| 国产精品视频自拍| 六十路精品视频| 亚洲深夜影院| 欧美大片第1页| 香港成人在线视频| 亚洲欧洲一区二区天堂久久| 国产精品日韩在线一区| 欧美成人黄色小视频| 亚洲欧美日韩精品久久久久| 欧美黄色小视频| 欧美在线一二三| 亚洲最快最全在线视频| 国产综合自拍| 欧美视频专区一二在线观看| 久久综合九色99| 午夜精品区一区二区三| 亚洲作爱视频| 亚洲福利视频一区| 久久夜色精品国产| 午夜精品亚洲| 亚洲天堂av在线免费| 亚洲激情女人| 在线日韩欧美| 国产亚洲福利| 国产精品久久一级| 欧美日韩精品高清| 欧美激情中文字幕一区二区| 久久久久国产精品午夜一区| 亚洲欧美一区二区原创| 一区二区三区四区五区精品| 亚洲人精品午夜在线观看| 蜜臀av国产精品久久久久| 久久久蜜桃一区二区人| 午夜国产一区| 亚洲欧美日本在线| 亚洲一二三四区| av成人免费观看| 一本一本久久a久久精品牛牛影视| 亚洲高清不卡一区| 亚洲国产欧美另类丝袜| 亚洲第一精品影视| 在线成人h网| 亚洲成人在线观看视频| 在线观看久久av| 亚洲盗摄视频| 亚洲激情在线| 亚洲免费高清| 9i看片成人免费高清| 宅男精品视频| 亚洲欧美日本国产有色| 香蕉久久久久久久av网站| 欧美一区免费| 久久免费视频网站| 欧美成人a∨高清免费观看| 牛牛精品成人免费视频| 欧美国产一区二区在线观看| 亚洲福利国产| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲黄色免费网站| 一区二区三区欧美日韩| 亚洲免费在线观看| 久久精品一区四区| 欧美暴力喷水在线| 国产精品成人观看视频国产奇米| 国产精品毛片va一区二区三区| 国产精品视频专区| 一区二区亚洲精品| 亚洲精品乱码久久久久久日本蜜臀| 99在线精品视频| 欧美一级精品大片| 久久一区二区三区国产精品 | 嫩草影视亚洲| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲精品国久久99热| 亚洲一区二区三区四区五区黄| 欧美在线黄色| 欧美美女视频| 国产亚洲福利一区| 亚洲经典在线看| 性做久久久久久| 欧美成人精品h版在线观看| 99人久久精品视频最新地址| 欧美在线播放| 欧美日韩在线看| 国产自产v一区二区三区c| 日韩视频精品在线观看| 久久精品亚洲一区二区| 亚洲国产天堂网精品网站| 亚洲砖区区免费| 欧美国产精品劲爆| 国产日韩欧美综合| 亚洲一区国产一区| 免费日韩精品中文字幕视频在线| 宅男精品视频| 欧美电影专区| 在线看片一区| 久久精品一区|