boost::posix_time::ptime из const char* "substring"

РЕДАКТИРОВАТЬ: На самом деле, пока мы на это, мне нужно сделать то же самое для double а также - у меня есть что-то NNNDD в середине const char*где N - это целая часть, а D - десятичная дробь (поэтому в 123.45 это будет выглядеть как const char* до 12345). Я знаю, сколько у меня будет целых чисел, и я знаю, сколько десятичных знаков, так что это просто вопрос получения дроби из них.

у меня есть const char* где-то посередине находится временная последовательность в формате ЧЧММССМММ (часы, минуты, секунды, миллисекунды). Я хотел бы создать ptime из этого (я знаю, где начинается последовательность, поэтому у меня есть const char* к его началу). Есть ли хороший, эффективный способ сделать это? Прямо сейчас я извлекаю каждое значение единицы времени, сохраняю их в локальных переменных и вызываю ptime конструктор по умолчанию boost::gregorian::date() и time_duration из hours(hh) + minutes(mm) + seconds(ss) + milliseconds(mmm)... но это кажется неуклюжим, окольным. Разве я не могу просто передать временную строку и не беспокоиться о дате?

1 ответ

Для пар, вставьте. и затем прочитайте это в двойном.

 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());
Другие вопросы по тегам