2013-07-23 35 views
1

既然我已經決定的計劃,應該在Windows和Linux上運行使用UTF-16內部,我需要更換一些字符串處理函數,因爲我不希望轉換和來自用戶模式代碼的本地char表示。但是,如果浮點轉換與運行iconv相比較慢,我可以使用strtod/sprintfWINE做的包裝。浮點轉換,沒有關於strtod/sprintf的

+3

儘管我可以推斷出你想問什麼,但明確提出你的問題會更好。 – Dukeling

回答

3

這些轉換成十進制和十進制轉換很難使快速和正確。天真的(但是正確的)版本假設多精度整數,這是你可能沒有計劃依賴的實現。簡而言之,包裝現有的stdtod/sprintf,不用擔心開銷,它會低於使用這些功能的天真實現時的性能損失。

在「幼稚不正確」的範疇,有一個implementation of strtod()左右浮動,所有口譯主機缺乏一個時使用。這個實現非常糟糕(它可能會返回幾個結果ULPs),但如果您不介意,則可以調整此代碼以操縱UTF-16字符。


注:有在C99我覺得swprintf(),但它是爲wchar_t字符串,這並不一定是UTF-16,所以可能不爲你工作。

+0

swprintf適用於windows,但對於linux我首先需要iconv,因爲它使用utf32或utf8。 – user877329

+1

@ user877329我以爲這是你沒有在你的問題中提及它的原因。 –