Inv*_*rse 3 c++ boost lexical-cast
我经常使用boost lexical_cast库将文本数据解析为数值。但是,在某些情况下,我只需要检查值是否为数字即可;我实际上不需要或不使用转换。
因此,我正在考虑编写一个简单的函数来测试字符串是否为双精度型:
template<typename T>
bool is_double(const T& s)
{
try
{
boost::lexical_cast<double>(s);
return true;
}
catch (...)
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,由于我从未真正使用过该值,是否有任何优化的编译器会在此处放弃lexical_cast?
有没有更好的技术可以使用lexical_cast库执行输入检查?
现在,您可以使用boost::conversion::try_lexical_convert标题中的now定义boost/lexical_cast/try_lexical_convert.hpp(如果只需要try_lexical_convert)。像这样:
double temp;
std::string convert{"abcdef"};
assert(boost::conversion::try_lexical_convert<double>(convert, temp) != false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6619 次 |
| 最近记录: |