lexical cast c ++

the*_*er7 1 c++ wrapper lexical-cast

我们如何编写一个包装器词法转换函数来实现如下行:

int value = lexical_cast<int> (string)
Run Code Online (Sandbox Code Playgroud)

我对编程很陌生,并且想知道我们如何编写函数.我不知道如何找出一个模板.我们也可以为double编写一个包装函数吗?喜欢

double value = lexical_cast2<double> (string)
Run Code Online (Sandbox Code Playgroud)

??

kay*_*kay 6

如您在示例中所述:

#include <sstream>

template <class Dest>
class lexical_cast
{
    Dest value;
public:
    template <class Src>
    lexical_cast(const Src &src) {
        std::stringstream s;
        s << src;
        s >> value;
    }

    operator const Dest &() const {
        return value;
    }

    operator Dest &() {
        return value;
    }
};
Run Code Online (Sandbox Code Playgroud)

包括错误检查:

    template <class Src>
    lexical_cast(const Src &src) throw (const char*) {
        std::stringstream s;
        if (!(s << src) || !(s >> value) || s.rdbuf()->in_avail()) {
            throw "value error";
        }
    }
Run Code Online (Sandbox Code Playgroud)