我正在尋找一種方法來設置整個程序的語言環境,如果可能的話。C++在整個程序中設置語言環境
我設置的語言環境中我的主要功能如下:
int main()
{
setlocale(LC_ALL, "");
....
return 0;
}
然而,這不是「語言環境牛逼設置爲我的不同的類/整個程序方法我」寧願不寫這行對每個將在屏幕上打印方法的頂部,並創造了C++語言環境對象,並通過它周圍沒有按「T頗感可以接受的。
謝謝您的時間。
我正在尋找一種方法來設置整個程序的語言環境,如果可能的話。C++在整個程序中設置語言環境
我設置的語言環境中我的主要功能如下:
int main()
{
setlocale(LC_ALL, "");
....
return 0;
}
然而,這不是「語言環境牛逼設置爲我的不同的類/整個程序方法我」寧願不寫這行對每個將在屏幕上打印方法的頂部,並創造了C++語言環境對象,並通過它周圍沒有按「T頗感可以接受的。
謝謝您的時間。
是修改全局區域設置的兩個功能是std::setlocale和std::locale::global。所有未來的C和C++ I/O和字符串處理都將使用它們,除了在您的代碼運行之前構建的六個標準I/O C++流以外,所以如果需要,您可能必須分別灌注它們:
#include <locale>
#include <clocale>
int main()
{
std::setlocale(LC_ALL, ""); // for C and C++ where synced with stdio
std::locale::global(std::locale("")); // for C++
std::cout.imbue(std::locale());
// cerr, clog, wcout, wcerr, wclog as needed
setlocale用於設置地區,但其範圍,如果由我們通過的第一個參數(即標誌)決定。在你的情況下,「LC_ALL」。
有兩種方法來設置區域設置。因此,根據setlocale的行爲,如果您將第二個參數作爲「」或NULL傳遞,它將採用系統環境中的默認值(LANG
)。代碼參考如下:
setenv("LANG","en_US.utf8",1);
cout << "GET ENV .... " << getenv("LANG");
setlocale(LC_ALL,"");
另一種方法是使用的語言環境,如下圖所示:
setlocale(LC_ALL,"en_US.utf8");
'setlocale'已經是全球性的,對於事情它應該影響。那些其他方法使用的是什麼類型的東西?我記得,'setlocale'會影響舊的「類似C」的API,但不會碰到像「cout」和C++流這樣的東西。 – TheUndeadFish 2014-09-06 03:20:24
我有一個類從文件讀取並且讀取它的一些內容。由於一些字母具有重音,它會讓我感到垃圾。主要設置setlocale,但似乎不影響第二類。 – Tristan 2014-09-06 21:43:44
這並不足以排除許多可能性......您可能正在使用setlocale不會影響的東西,如std :: fstream。或者問題可能與cout和控制檯有關。或者您的文件數據可能採用不按照您的預期方式轉換的編碼。等等。在這一點上,我認爲你應該編輯這個問題或者發佈一個覆蓋你實際問題的新問題,併發布你如何閱讀文件和通過cout發送數據的代碼。 – TheUndeadFish 2014-09-07 05:51:58