1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <exception> 2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <iostream> 3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <locale> 4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <ctime> 5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottusing namespace std; 7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid main() 9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try 11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale c_loc; 13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //locale sys(c_loc, "LC_TIME=UKR_UKR.OCP;LC_NUMERIC=RUS_RUS.OCP;LC_CTYPE=ukr_ukr.ocp;", locale::numeric | locale::time | locale::ctype); 14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale sys(".ocp"); 15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale::global(sys); 16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cin.imbue(sys); 17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cout.imbue(sys); 18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cout<<"Locale name is: "<<sys.name().c_str()<<'\n'; 20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cout<<"Enter real number:"; 22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott double value; 23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cin>>value; 24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cout<<value<<'\n'; 25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // Time test. 27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott long lcur_time; 28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott time(&lcur_time); 29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott struct tm* cur_time=localtime(&lcur_time); 30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const numpunct<char>& num_punct=use_facet<numpunct<char> >(cout.getloc()); 32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cout << num_punct.decimal_point() << '\n'; 33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const time_put<char, ostreambuf_iterator<char, char_traits<char> > >& time_fac= 34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott use_facet<time_put<char, ostreambuf_iterator<char, char_traits<char> > > >(cout.getloc()); 35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott time_fac.put(cout, cout, NULL, cur_time, 'x'); cout<<'\n'; 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott time_fac.put(cout, cout, NULL, cur_time, 'x', '#'); cout<<'\n'; 37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott time_fac.put(cout, cout, NULL, cur_time, 'X'); cout<<'\n'; 38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott time_fac.put(cout, cout, NULL, cur_time, 'c'); cout<<'\n'; 39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott time_fac.put(cout, cout, NULL, cur_time, 'c', '#'); cout<<'\n'; 40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott time_fac.put(cout, cout, NULL, cur_time, 'I'); cout<<'\n'; 41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const ctype<char>& char_type=use_facet<ctype<char> >(cout.getloc()); 43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if(char_type.is(ctype_base::upper, '�')) puts("Upper"); 44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if(char_type.is(ctype_base::lower, '�')) puts("Lower"); 45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott puts("Next"); 46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if(isupper('�', cout.getloc())) puts("Upper"); 47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if(islower('�', cout.getloc())) puts("Lower"); 48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott /*for(int ch=128; ch<256; ch++) 49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott printf("Character %c (%d) - upper %c, lower %c\n",(char)ch, ch,toupper((char)ch, cout.getloc()), tolower((char)ch, cout.getloc()));*/ 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch(exception &e) 52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cout<<"Exception fired:\n"<<e.what()<<'\n'; 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch(...) 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cout<<"Unknown exception throwed!\n"; 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cout.flush(); 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 61