Chương trình của tôi kiểm tra các chữ in hoa bằng tiếng Đức.In tất cả std :: tên địa phương (Windows)
#include <iostream>
#include <boost/algorithm/string/classification.hpp>
#include <boost/locale.hpp>
using namespace std;
int main()
{
locale::global(locale("Germany_german"));
//locale::global(locale("de_DE.UTF-8")); //Also tried "de_DE.UTF-8", but does not work
string str1 = "über";
cout << boolalpha << any_of(str1.begin(), str1.end(), boost::algorithm::is_upper()) << endl;
string str2 = "Ää";
cout << boolalpha << any_of(str2.begin(), str2.end(), boost::algorithm::is_upper()) << endl;
return 0;
}
chương trình bị treo với lỗi trên giao diện điều khiển
terminate called after throwing an instance of 'std::runtime_error'
what(): locale::facet::_S_create_c_locale name not valid
Tôi không biết điều đó có chuỗi ngôn ngữ chính xác là "de_DE.UTF-8" không hoạt động là tốt.
Có cách nào để tôi có thể nhận các chuỗi tên miền địa phương chính xác cho tất cả các ngôn ngữ được hệ điều hành hỗ trợ hay không. Có thể có một danh sách ở đâu đó trong các tệp tiêu đề, nhưng tôi không thấy bất kỳ đầu đề nào <locale>
.
Bạn có thể thực hiện 'locale -a' trên dòng lệnh. – 0x499602D2
Tôi đang sử dụng Windows – user1
"de-DE" và "German_Germany". Ít nhất, bạn sẽ có thể xây dựng 'locale' từ các chuỗi này. –