我用下面的C++語法來輸出在Windows平臺上的浮點值:C++的printf用%F,但本地化爲用戶的國家
printf("%.2f", 1.5);
它工作得很好,如果我在英文運行用戶帳號。我的假設是,如果我運行它,說法語用戶帳戶,輸出將是1,50而不是1.50。
爲什麼我沒有看到它,以及如何產生我想要的結果?
我用下面的C++語法來輸出在Windows平臺上的浮點值:C++的printf用%F,但本地化爲用戶的國家
printf("%.2f", 1.5);
它工作得很好,如果我在英文運行用戶帳號。我的假設是,如果我運行它,說法語用戶帳戶,輸出將是1,50而不是1.50。
爲什麼我沒有看到它,以及如何產生我想要的結果?
基數字符(即'。'或',')由當前語言環境定義。默認語言環境(至少在Windows系統中)是「C」,它定義了「。」作爲基數字符。
您可以使用setlocale
函數設置C/C++程序的當前語言環境。
要區域設置爲當前系統/用戶區域,可以使用下面的語句:
#include <locale.h>
setlocale(LC_ALL, ".OCP");
見here(參見鏈接頁面上的例子......),瞭解更多有關setlocale
嘗試使用setlocale()函數 http://www.cplusplus.com/reference/clibrary/clocale/setlocale/
謝謝,但是當我應該調用setlocale - 當應用程序初始化或每printf的前開頭? – ahmd0
在您的應用程序開始時調用一次就足夠了。 – MartinStettner
C++替代方法是'std :: cout.imbue(std :: locale(「」));' – MSalters