如何将 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 long 86808525850 .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

将 int 转换为 std::string

boost::interprocess::string 转换为 char*

如何将 std::function 包装器转换为可变参数函数?

从'boost::filesystem3::path'到非标量类型'std::string'的提升错误转换

提取和转换 boost::python::list 的列表元素