2014-07-02 43 views
0

EDIT:實際上,當我們處於這個狀態時,我需要爲double做同樣的事情 - 我有一些NNNDD在const char*,其中N是整個部分,D是小數(因此在123.45中將顯示爲const char*至12345)。我知道我會有多少個整數,並且我知道有多少個小數,所以這只是一小部分。boost :: posix_time :: ptime from const char *「substring」

我有一個const char*中間的某個地方有格式爲HHMMSSMMM(小時,分鐘,秒,毫秒)的時間序列。我想創建一個ptime(我知道序列開始的位置,所以我有一個const char*開始)。有沒有一個好的,有效的方法來做到這一點?現在,我提取每個時間單位值,將它們存儲在局部變量中,然後調用ptime的構造函數,默認boost::gregorian::date()time_duration,hours(hh) + minutes(mm) + seconds(ss) + milliseconds(mmm) ...但它感覺有點笨拙,迂迴。我不應該只能通過一個時間字符串,不擔心日期?

回答

0

對於雙打,插入一個。然後讀入一個雙。

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()); 
+0

不是'atof'是一個相對昂貴的操作嗎? – Argent

+0

當然,但我沒有看到將'string'轉換爲'double'的更好方法。 – lcs

相關問題