2015-11-25 32 views
0

與Windows有關的C++問題!爲什麼在解析字符串時_tcstod使用我的windows區域設置?

我想使用_tcstod()來解析一個字符串來獲得一個浮點值。通常,如果我打電話

wchar_t* endPtr; 
float result = static_cast<float>(_tcstod("12.345678", &endPtr)); 

我得到一個浮點值12.345678和endPtr行爲如預期。如果我在Windows區域和語言設置中更改區域小數點分隔符,這實際上會出現問題。具體來說,如果我從「。」更改小數分隔符。到「,」,突然_tcstod只返回值12而不是整個事物。之後的任何事情。被切斷。

是否有某種方法可以解析來自字符串的浮點值,同時不可知我的Region設置?

回答

0

爲什麼在解析字符串時_tcstod使用我的Windows區域設置?

因爲它應該。

有沒有什麼方法可以解析來自字符串的float值,同時不可知我的Region設置?

當然。在C++中最簡單的方法是使用stringstream並將其與默認或「C」語言環境一起使用。

相關問題