Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <tchar.h>
- #include <locale.h>
- #include <Windows.h>
- int main()
- {
- if (_tsetlocale(LC_ALL, _T("Russian")) != NULL) {
- _tprintf(_T("LOCALE SET SUCCESS\n\n"));
- } else {
- _tprintf(_T("LOCALE SET FAIL\n\n"));
- }
- char * family[] = { "3Имя Фамилия Отчество", "2Имя Фамилия Отчество", "1Имя Фамилия Отчество" };
- TCHAR * ufamily[sizeof family / sizeof family[0]];
- _tprintf(_T("MultiByteToWideChar:\n"));
- for (int i = 0; i < sizeof family / sizeof family[0]; i++)
- {
- ufamily[i] = new wchar_t[strlen(family[i]) * 2];
- MultiByteToWideChar(CP_ACP, 0, family[i], strlen(family[i]) + 1, ufamily[i], strlen(family[i]) * 2);
- _tprintf(_T("%s\n"), ufamily[i]);
- MessageBox(0, ufamily[i], _T("Title"), MB_OK);
- }
- _tprintf(_T("\nSorting...\n"));
- qsort(
- ufamily,
- sizeof ufamily / sizeof ufamily[0],
- sizeof ufamily[0],
- [](const void * a, const void * b) -> int
- {
- if (sizeof TCHAR == 1)
- return strcmp(*(char**)a, *(char**)b);
- else
- return wcscmp(*(wchar_t**)a, *(wchar_t**)b);
- }
- );
- for (int i = 0; i < sizeof ufamily / sizeof ufamily[0]; i++)
- {
- _tprintf(_T("%s\n"), ufamily[i]);
- }
- _tprintf(_T("\nWideCharToMultiByte:\n"));
- char * family_check[sizeof ufamily / sizeof ufamily[0]];
- for (int i = 0; i < sizeof ufamily / sizeof ufamily[0]; i++)
- {
- family_check[i] = new char[wcslen(ufamily[i])];
- WideCharToMultiByte(CP_ACP, 0, ufamily[i], wcslen(ufamily[i]) + 1, family_check[i], strlen(family_check[i]), 0, 0);
- printf("%s\n", family_check[i]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement