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

隨筆-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>
            亚洲国产精品一区二区久| 国产综合久久久久久| 最新日韩欧美| 亚洲黄一区二区| 欧美黑人在线观看| 一区二区91| 亚洲一二三四区| 国产日韩欧美精品一区| 久久夜色撩人精品| 久久综合色播五月| 9久草视频在线视频精品| 亚洲毛片在线看| 国产精品国产三级国产普通话三级 | 亚洲一区999| 国产午夜精品美女视频明星a级| 久久精品国产亚洲一区二区三区| 欧美在线亚洲| 999亚洲国产精| 亚洲一二区在线| 亚洲国产精品成人精品| 亚洲久久一区| 国内视频精品| 日韩视频免费观看高清完整版| 国产精品久久久久久久久久久久| 久久久久久有精品国产| 欧美国产日韩亚洲一区| 香蕉成人伊视频在线观看| 老司机精品视频网站| 亚洲主播在线观看| 免费成人网www| 欧美亚洲综合另类| 欧美福利一区二区三区| 久久精品国亚洲| 欧美色123| 欧美成人亚洲| 国产亚洲亚洲| 亚洲作爱视频| 亚洲欧洲日韩综合二区| 欧美在线短视频| 亚洲免费人成在线视频观看| 久久综合久久久久88| 欧美一区二区三区免费视| 欧美国产三级| 欧美国产日韩在线| 韩国在线一区| 亚洲影院色在线观看免费| 99精品视频免费观看视频| 久久人人九九| 久久久伊人欧美| 国产美女精品免费电影| 夜久久久久久| 亚洲深夜福利在线| 欧美精品一区二区在线观看 | 亚洲国产一区二区视频| 性做久久久久久| 亚洲欧美日本日韩| 欧美日韩日韩| 亚洲日本黄色| 亚洲免费观看高清完整版在线观看熊 | 亚洲一区国产| 亚洲综合大片69999| 欧美日韩久久久久久| 欧美大片在线观看| 亚洲动漫精品| 美女网站在线免费欧美精品| 免费欧美在线视频| 1769国产精品| 牛牛国产精品| 亚洲国产另类久久久精品极度| 极品av少妇一区二区| 久久视频这里只有精品| 欧美电影资源| 亚洲欧洲一区二区在线播放| 免费日韩精品中文字幕视频在线| 美国三级日本三级久久99| 红桃视频一区| 蜜臀av在线播放一区二区三区| 欧美激情久久久久| 一本久久青青| 国产精品美女一区二区在线观看| 亚洲欧美日本国产专区一区| 久久精品国产亚洲a| 影音先锋中文字幕一区| 久久婷婷蜜乳一本欲蜜臀| 亚洲国产精品视频一区| 日韩天堂av| 国产精品国产自产拍高清av王其 | 亚洲清纯自拍| 亚洲在线第一页| 国产一区导航| 欧美成人午夜剧场免费观看| 在线视频日本亚洲性| 久久精品二区亚洲w码| 影音欧美亚洲| 欧美日韩三区| 欧美一区二区在线看| 欧美96在线丨欧| 在线综合视频| 一区二区三区自拍| 欧美日韩一区二区视频在线观看| 欧美一区二区高清| 亚洲欧洲在线播放| 欧美在线网址| 亚洲理论在线| 国产在线观看精品一区二区三区| 欧美成人免费大片| 新狼窝色av性久久久久久| 欧美gay视频激情| 亚洲欧美一区二区激情| 在线免费观看日本一区| 国产精品伦子伦免费视频| 久久综合免费视频影院| 正在播放日韩| 亚洲激情在线激情| 久久亚洲国产精品日日av夜夜| 日韩视频一区二区三区在线播放 | 美日韩丰满少妇在线观看| 宅男精品导航| 91久久精品www人人做人人爽| 午夜在线不卡| 亚洲午夜精品国产| 国产精品成人一区二区网站软件 | 国产一区二区三区四区五区美女| 国产精品视频yy9099| 国产精品永久| 极品少妇一区二区| 亚洲激情欧美| 夜夜嗨av一区二区三区中文字幕| 一区二区三区欧美日韩| 亚洲自拍另类| 久久综合色影院| 亚洲国内欧美| 亚洲摸下面视频| 久久久久欧美精品| 欧美精品在线观看播放| 国产精品每日更新在线播放网址| 国产亚洲美州欧州综合国| 在线播放日韩专区| 日韩视频精品在线| 久久不见久久见免费视频1| 老巨人导航500精品| 亚洲九九精品| 欧美在线视频不卡| 欧美精品日本| 国产手机视频精品| 日韩天堂在线观看| 久久久久久久综合日本| 亚洲国产成人在线| 亚洲欧美日韩在线一区| 欧美高清视频一区二区| 国产麻豆精品久久一二三| 91久久夜色精品国产九色| 欧美中文日韩| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲视频一区二区免费在线观看| 久久久精品999| 国产精品女人网站| 亚洲精品字幕| 久久久在线视频| 在线亚洲精品| 欧美交受高潮1| 亚洲国产精品久久久| 欧美影片第一页| 日韩亚洲国产欧美| 老司机67194精品线观看| 国产乱码精品一区二区三区五月婷| 亚洲激情第一区| 狂野欧美激情性xxxx欧美| 亚洲性视频网址| 欧美日韩国产首页| 最新国产成人av网站网址麻豆| 久久精品国产一区二区三| 夜夜嗨av一区二区三区四区| 欧美不卡一区| 亚洲激情成人| 欧美风情在线观看| 久久九九久精品国产免费直播| 国产精品福利在线| 亚洲理论在线观看| 欧美好骚综合网| 老色鬼精品视频在线观看播放| 国产自产精品| 久久人人超碰| 欧美一级播放| 国产一区二区三区久久精品| 欧美一区国产二区| 亚洲免费在线播放| 国产精品日本精品| 午夜亚洲福利在线老司机| 国产精品99久久久久久有的能看| 欧美精品在线网站| 日韩午夜av在线| 日韩视频三区| 国产精品久久久久久久久动漫| 亚洲午夜影视影院在线观看| 日韩亚洲精品在线| 国产精品久久久久久久app| 欧美一区二区三区免费视频| 亚洲免费在线| 国内在线观看一区二区三区|