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)
??
如您在示例中所述:
#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)