home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / stlpt453.zip / STLport-4.5.3 / test / eh / locale.cpp < prev    next >
C/C++ Source or Header  |  2000-12-07  |  2KB  |  61 lines

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