C++ boost::posix_time::ptime from const char*“substring” 编辑:实际上,当我们在它的时候,我也需要做同样的事情来做一个加倍的事情。我在conchchar的中间有一个NNDD,其中N是整部分,D是小数,所以在123.45中它会出现为一个conchar *到12345。我知道有多少个整数,我知道有多少个小数,所以只需要从中得到一个分数 我有一个conchar *,在中间有一个格式的时间序列HHMMSSMM,小时,分钟,秒,毫秒。我想用它创建一个ptime,我知道序列从哪里开始,所以我有一个const char*到它的开始。有没有一个好的,有效的方法来做到这一点?现在我正在提取每个时间单位值,将它们存储在局部变量中,并使用默认的boost::gregorian::date和时长为hourshh+minutesmm+secondsss+millissecondsmm调用ptime构造函数。。。但感觉有点笨拙,迂回。难道我不能只传递一个时间字符串而不用担心日期吗?

C++ boost::posix_time::ptime from const char*“substring” 编辑:实际上,当我们在它的时候,我也需要做同样的事情来做一个加倍的事情。我在conchchar的中间有一个NNDD,其中N是整部分,D是小数,所以在123.45中它会出现为一个conchar *到12345。我知道有多少个整数,我知道有多少个小数,所以只需要从中得到一个分数 我有一个conchar *,在中间有一个格式的时间序列HHMMSSMM,小时,分钟,秒,毫秒。我想用它创建一个ptime,我知道序列从哪里开始,所以我有一个const char*到它的开始。有没有一个好的,有效的方法来做到这一点?现在我正在提取每个时间单位值,将它们存储在局部变量中,并使用默认的boost::gregorian::date和时长为hourshh+minutesmm+secondsss+millissecondsmm调用ptime构造函数。。。但感觉有点笨拙,迂回。难道我不能只传递一个时间字符串而不用担心日期吗?,c++,boost,unit-conversion,C++,Boost,Unit Conversion,对于双打,插入一个。然后把它读成一双 const char * pDoubleString = ...; const long DoubleStringLength = ...; const long DoubleWholeCharCount = ...; std::string DoubleAsString = std::string(pDoubleString, DoubleStringLength); DoubleAsString.Insert(DoubleWholeCharC

对于双打,插入一个。然后把它读成一双

 const char * pDoubleString = ...;
 const long DoubleStringLength = ...;
 const long DoubleWholeCharCount = ...;

 std::string DoubleAsString = std::string(pDoubleString, DoubleStringLength);
 DoubleAsString.Insert(DoubleWholeCharCount, ".");
 double DoubleValue = std::atof(DoubleAsString.c_str());

atof不是一个相对昂贵的操作吗?当然,但我没有看到更好的方法将字符串转换为double。