如何将 std::string 转换为 boost::chrono::nanoseconds
Posted
技术标签:
【中文标题】如何将 std::string 转换为 boost::chrono::nanoseconds【英文标题】:how to convert std::string to boost::chrono::nanoseconds 【发布时间】:2017-11-24 18:18:26 【问题描述】:我已经尝试从 std::string 和 long long 进行词法转换。两者都给出零值。有什么想法吗?
boost::lexical_cast<boost::chrono::nanoseconds>(value) //value can be of std::string or long long type
【问题讨论】:
你的字符串是如何格式化的? 字符串包含什么? 嗨,您的意见是什么? @Jarod42 , @Galik , @Stefan : for long86808525850
.same 适用于字符串,因为我使用 std::stoll() 从字符串转换为 long long
Edit您的问题包含所有相关信息
【参考方案1】:
先尝试对字符串使用词法强制转换,看看会发生什么:
#include <iostream>
#include <string>
#include "boost/lexical_cast.hpp"
#include "boost/chrono.hpp"
int main()
boost::chrono::nanoseconds test11000; // could use long long here directly
auto text = boost::lexical_cast<std::string>(test1);
std::cout << text << '\n';
auto val = boost::lexical_cast<boost::chrono::nanoseconds>(text);
std::cout << val << '\n';
打印:
1000 nanoseconds
1000 nanoseconds
【讨论】:
【参考方案2】:时间单位没有定义输入/输出流。
先转换成ull:
boost::chrono::nanoseconds(boost::lexical_cast<uint64_t>(value))
【讨论】:
以上是关于如何将 std::string 转换为 boost::chrono::nanoseconds的主要内容,如果未能解决你的问题,请参考以下文章
Boost.Python.ArgumentError:python str 未转换为 std::string
boost::interprocess::string 转换为 char*
如何将 std::function 包装器转换为可变参数函数?