Advertisement
Guest User

OS Lab 1

a guest
Mar 20th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <tchar.h>
  4. #include <locale.h>
  5. #include <Windows.h>
  6.  
  7. int main()
  8. {
  9.     if (_tsetlocale(LC_ALL, _T("Russian")) != NULL) {
  10.         _tprintf(_T("LOCALE SET SUCCESS\n\n"));
  11.     } else {
  12.         _tprintf(_T("LOCALE SET FAIL\n\n"));
  13.     }
  14.  
  15.     char * family[] = { "3Имя Фамилия Отчество", "2Имя Фамилия Отчество", "1Имя Фамилия Отчество" };
  16.     TCHAR * ufamily[sizeof family / sizeof family[0]];
  17.  
  18.     _tprintf(_T("MultiByteToWideChar:\n"));
  19.  
  20.     for (int i = 0; i < sizeof family / sizeof family[0]; i++)
  21.     {
  22.         ufamily[i] = new wchar_t[strlen(family[i]) * 2];
  23.         MultiByteToWideChar(CP_ACP, 0, family[i], strlen(family[i]) + 1, ufamily[i], strlen(family[i]) * 2);
  24.         _tprintf(_T("%s\n"), ufamily[i]);
  25.         MessageBox(0, ufamily[i], _T("Title"), MB_OK);
  26.     }
  27.  
  28.     _tprintf(_T("\nSorting...\n"));
  29.  
  30.     qsort(
  31.         ufamily,
  32.         sizeof ufamily / sizeof ufamily[0],
  33.         sizeof ufamily[0],
  34.         [](const void * a, const void * b) -> int
  35.         {
  36.             if (sizeof TCHAR == 1)
  37.                 return strcmp(*(char**)a, *(char**)b);
  38.             else
  39.                 return wcscmp(*(wchar_t**)a, *(wchar_t**)b);
  40.         }
  41.     );
  42.  
  43.    
  44.     for (int i = 0; i < sizeof ufamily / sizeof ufamily[0]; i++)
  45.     {
  46.         _tprintf(_T("%s\n"), ufamily[i]);
  47.     }
  48.  
  49.     _tprintf(_T("\nWideCharToMultiByte:\n"));
  50.  
  51.     char * family_check[sizeof ufamily / sizeof ufamily[0]];
  52.  
  53.     for (int i = 0; i < sizeof ufamily / sizeof ufamily[0]; i++)
  54.     {
  55.         family_check[i] = new char[wcslen(ufamily[i])];
  56.         WideCharToMultiByte(CP_ACP, 0, ufamily[i], wcslen(ufamily[i]) + 1, family_check[i], strlen(family_check[i]), 0, 0);
  57.         printf("%s\n", family_check[i]);
  58.     }
  59.  
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement