Như @AkiRoss đã nói, bạn cần sử dụng ngôn ngữ. Nói chung, trong bất kỳ chương trình bạn viết, một trong những hành động đầu tiên trong main
nên để thiết lập miền địa phương toàn cầu để lựa chọn người dùng, bằng cách làm cái gì đó như:
std::locale::global(std::locale(""));
này nên có hệ thống , trong mọi chương trình tương tác với người dùng của con người. Tất cả các tệp được mở sau thời gian này sẽ tự động được đính kèm với ngôn ngữ chính xác .
Ngoài ra, bạn có thể xác định một cách rõ ràng locale bạn muốn sử dụng:
std::locale::global(std::locale(locale_name));
Vấn đề với điều này là không có tiêu chuẩn cho miền địa phương tên. Một cái gì đó như "it_IT.UTF-8"
tương ứng với tiêu chuẩn Posix và được sử dụng trên Internet; Windows có truyền thống là đã sử dụng định dạng khác (mặc dù Windows gần đây có vẻ như cũng chấp nhận định dạng này).
Lá nào std::cin
, std::cout
và std::cerr
.Đây là số được mở trước khi bạn nhập main
và do đó phải được nhúng bằng ngôn ngữ mới. (Để có được một bản sao của miền địa phương toàn cầu hiện nay, sử dụng constructor mặc định của std::locale
.)
Cuối cùng, nếu bạn đang mở bất kỳ tập tin nhị phân, phải nhận thức được rằng họ cũng sẽ được thấm nhuần với locale toàn cầu. Mà có thể làm mã dịch. Trong những trường hợp như vậy, bạn nên truyền đạt chúng một cách rõ ràng với std::locale::classic()
hoặc tạo ngôn ngữ mới bằng cách hợp nhất khía cạnh codecvt
của std::locale::classic()
với các khía cạnh khác của miền địa phương toàn cầu. (std::locale
có các chức năng đặc biệt và các nhà thầu cho việc này.)
Nguồn
2013-03-05 10:47:41
Ý bạn là, trong mã? Giống như 'double x = 3,14;'? –
Không có tệp đầu ra tiêu chuẩn, đầu vào, đọc và ghi khi chạy (không phải lúc biên dịch). –
một từ: miền địa phương. – PlasmaHH