【发布时间】:2022-01-08 04:05:06
【问题描述】:
我得到了一个时间戳列表(假设我们有一个现成的std::vector<std::string>),格式为std::vector<std::string> = {"12:27:37.740002", "19:37:17.314002", "20:00:07.140902",...}。没有日期,没有时区。将这些字符串解析为某种 C++ 类型(std::chrono::time_point ?)以便稍后执行一些比较和排序的更好方法是什么。
例如:比较从"20:00:07.140902"解析的值和从"20:00:07.000000"解析的值。
C++17 没问题,但我不能使用任何第三方库(Boost、Date 等)。 保持微秒级精度至关重要。
【问题讨论】:
-
我建议将它们解析为具有四个或更多成员的
struct。第一个代表小时,第二个代表分钟,第三个代表秒,第四个代表秒的分数,直到所需的粒度。例如,"12:27:37.740002"将被解析为struct TimeStamp{12, 27, 37, 740002}。这将使比较更容易。 -
C++库中没有这种东西,你用的关键词是“任何第三方库”。这意味着这个家庭作业要求你自己实现所有的解析,逐个字符,对无效输入进行错误检查,使用逻辑和循环,并从头到尾完成所有工作。 C++ 中很少有事情可以简单地通过找到一个可以完成所有事情的标准 C++ 库函数来完成。
标签: c++ string parsing timestamp c++17