2016-12-20 18 views
3

現在の地域設定の区切り記号を使用して番号を表示しようとしています。CString.Format()の地域設定の小数点区切り記号を使用します。

Cstring result;  
Cstring myMeasure; 

myMeasure.Format(_T("%.6f %s"), myDouble, myUnit)); 
result.Format("My volume is: %s", myMeasure); 

結果は、例えば等しい "私のボリュームがある:4.565600 mLの"

は、ここに私のコードです。 フランス語の地域設定を使用すると、結果は変わりません(フランスの小数点記号はピリオドではなくカンマ)。

私はsetlocale()メソッドを不当に試しました。

char* originalCulture = setlocale(LC_ALL, NULL); // save original culture 
setlocale(LC_ALL,""); 

Cstring result;  
Cstring myMeasure; 

myMeasure.Format(_T("%.6f %s"), myDouble, myUnit)); 
result.Format("My volume is: %s", myMeasure); 

setlocale(LC_ALL, originalCulture); // restore original culture 

誰かが私を助けることができますか?

答えて

0

あなたはロケールを適用するために何かを行う前にsetlocale(LC_ALL, "")またはsetlocale(LC_ALL, "your_locale")を呼び出す必要があります。前者はオペレーティングシステムのデフォルトロケールを設定し、後者は特定ロケールを設定します。 setlocaleについての詳細は、this MSDN articleを参照してください。

+0

私はすでにこのMSDNの記事を読んでいますが、10進数については役に立ちませんでした。私は特定の形式_T( "%。6f%s")が必要です。おそらく、期間を課すのはこの特定の形式ですか? –

関連する問題