2011-10-07 25 views
14

我用下面的C++語法來輸出在Windows平臺上的浮點值:C++的printf用%F,但本地化爲用戶的國家

printf("%.2f", 1.5); 

它工作得很好,如果我在英文運行用戶帳號。我的假設是,如果我運行它,說法語用戶帳戶,輸出將是1,50而不是1.50。

爲什麼我沒有看到它,以及如何產生我想要的結果?

回答

16

基數字符(即'。'或',')由當前語言環境定義。默認語言環境(至少在Windows系統中)是「C」,它定義了「。」作爲基數字符。

您可以使用setlocale函數設置C/C++程序的當前語言環境。

要區域設置爲當前系統/用戶區域,可以使用下面的語句:

#include <locale.h> 
setlocale(LC_ALL, ".OCP"); 

here(參見鏈接頁面上的例子......),瞭解更多有關setlocale

+0

謝謝,但是當我應該調用setlocale - 當應用程序初始化或每printf的前開頭? – ahmd0

+1

在您的應用程序開始時調用一次就足夠了。 – MartinStettner

+2

C++替代方法是'std :: cout.imbue(std :: locale(「」));' – MSalters