如何从RESTinio的REST API查询中获取long、double类型参数?
RESTinio内置数值类型参数转换方法
RESTinio确实提供了内置的数值类型转换功能,不需要手动实现字符串转数值的逻辑。核心是利用query_string_params_t提供的两个关键方法:
1. try_get_value<T>()方法
这个方法会尝试将指定名称的查询参数转换为模板参数T对应的数值类型,返回一个std::optional<T>对象:
- 如果参数存在且转换成功,
optional会包含转换后的值 - 如果参数不存在或者字符串无法转换为目标类型(比如非数字字符串转double),
optional为空
示例代码(转换double类型参数):
const restinio::query_string_params_t qp = restinio::parse_query(req->header().query()); if (auto accept_time_opt = qp.try_get_value<double>("AcceptTime")) { double dAcceptTime = *accept_time_opt; // 在这里处理转换后的数值 } else { // 参数不存在或转换失败的处理逻辑,比如返回错误响应 }
转换long类型参数的示例:
if (auto some_long_opt = qp.try_get_value<long>("SomeLongParam")) { long long_val = *some_long_opt; }
2. get_value_or<T>()方法
如果希望在参数不存在或转换失败时直接使用默认值,可以用这个方法:
const restinio::query_string_params_t qp = restinio::parse_query(req->header().query()); // 若AcceptTime参数无效,dAcceptTime会被设为0.0 double dAcceptTime = qp.get_value_or<double>("AcceptTime", 0.0);
支持的类型
这些转换方法支持绝大多数常用数值类型,包括:
- 整数类型:
int、long、long long、unsigned int等 - 浮点类型:
float、double - 布尔类型:
bool(会自动识别"true"/"false"、"1"/"0"等字符串)
内容的提问来源于stack exchange,提问作者Dominique
相关产品推荐
相关产品推荐

