Форум программистов, компьютерный форум CyberForum.ru

Wide <--> ansi - C++

Восстановить пароль Регистрация
 
Dark Byte
6 / 23 / 4
Регистрация: 23.10.2014
Сообщений: 850
Завершенные тесты: 2
20.11.2014, 21:52     Wide <--> ansi #1
а можно как то сконвертить один символ wide в ansi и обратно? кроме как через функции типа MultiByteToWideChar? wchar_t - 2х байтный тип, char - 1 байтный, так может можно как то сдвигом или еще какими то битовыми операциями конвертить? или MultiByteToWideChar и прочие конвертят по каким то таблицам? и кстати есть функции для конвертации конкретно одного символа, а не целой строки? (знаю можно заюзать и эти, но сложнее...)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 21:52     Wide <--> ansi
Посмотрите здесь:

Ansi C.функции C++
C++ ANSI C
поинтер на unicode wide char C++
стандарт ANSI C++
C++ ANSI to UCS2 LE
C++ Обработка .txt кодировка ANSI и UTF-8 (буква "я" в ANSI воспринимается как EOF)
C++ ANSI и UNICODE
ANSI to Unicode C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4326 / 3747 / 1261
Регистрация: 14.04.2014
Сообщений: 14,712
20.11.2014, 21:57     Wide <--> ansi #2
Пользуйся функциями, не изобретай велосипед. Чтобы один символ преобразовать, просто укажи длину строки 1.
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,921
Записей в блоге: 1
21.11.2014, 00:55     Wide <--> ansi #3
Цитата Сообщение от Dark Byte Посмотреть сообщение
а можно как-то
Можно. Используя обычные XLAT-таблицы. Но они зависят от локали, так что если это стандартная (поддерживаемая системой) перекодировка, то проще вызвать пару функций из API.

Пример

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
static char  XLAT_DOS_WIN[256] =
{
   '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0A', '\x0B', '\x0C', '\x0D', '\x0E', '\x0F',
   '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1A', '\x1B', '\x1C', '\x1D', '\x1E', '\x1F',
   '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2A', '\x2B', '\x2C', '\x2D', '\x2E', '\x2F',
   '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3A', '\x3B', '\x3C', '\x3D', '\x3E', '\x3F',
   '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4A', '\x4B', '\x4C', '\x4D', '\x4E', '\x4F',
   '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5A', '\x5B', '\x5C', '\x5D', '\x5E', '\x5F',
   '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6A', '\x6B', '\x6C', '\x6D', '\x6E', '\x6F',
   '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7A', '\x7B', '\x7C', '\x7D', '\x7E', '\x7F',
   '\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7', '\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF',
   '\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7', '\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF',
   '\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7', '\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF',
   '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00',
   '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00',
   '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00',
   '\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\xF7', '\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF',
   '\xA8', '\xB8', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'
};
 
static char  XLAT_WIN_DOS[256] =
{
   '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0A', '\x0B', '\x0C', '\x0D', '\x0E', '\x0F',
   '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1A', '\x1B', '\x1C', '\x1D', '\x1E', '\x1F',
   '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2A', '\x2B', '\x2C', '\x2D', '\x2E', '\x2F',
   '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3A', '\x3B', '\x3C', '\x3D', '\x3E', '\x3F',
   '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4A', '\x4B', '\x4C', '\x4D', '\x4E', '\x4F',
   '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5A', '\x5B', '\x5C', '\x5D', '\x5E', '\x5F',
   '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6A', '\x6B', '\x6C', '\x6D', '\x6E', '\x6F',
   '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7A', '\x7B', '\x7C', '\x7D', '\x7E', '\x7F',
   '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87', '\x88', '\x89', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F',
   '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97', '\x98', '\x99', '\x9A', '\x9B', '\x9C', '\x9D', '\x9E', '\x9F',
   '\xA0', '\xA1', '\xA2', '\xA3', '\xA4', '\xA5', '\xA6', '\xA7', '\xF0', '\xA9', '\xAA', '\xAB', '\xAC', '\xAD', '\xAE', '\xAF',
   '\xB0', '\xB1', '\xB2', '\xB3', '\xB4', '\xB5', '\xB6', '\xB7', '\xF1', '\xB9', '\xBA', '\xBB', '\xBC', '\xBD', '\xBE', '\xBF',
   '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87', '\x88', '\x89', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F',
   '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97', '\x98', '\x99', '\x9A', '\x9B', '\x9C', '\x9D', '\x9E', '\x9F',
   '\xA0', '\xA1', '\xA2', '\xA3', '\xA4', '\xA5', '\xA6', '\xA7', '\xA8', '\xA9', '\xAA', '\xAB', '\xAC', '\xAD', '\xAE', '\xAF',
   '\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7', '\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF'
};
 
static char  XLAT_GSM_UNICODE_EN[256] =  // Without Extended Chars !!
{
   '\x40', '\xA3', '\x24', '\xA5', '\xE8', '\xE9', '\xF9', '\xEC', '\xF2', '\xE7', '\x0A', '\xD8', '\xF8', '\x0D', '\xC5', '\xE5',
   '\x2E', '\x5F', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x00', '\xC6', '\xE6', '\xDF', '\xC9',
   '\x20', '\x21', '\x22', '\x23', '\xA4', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2A', '\x2B', '\x2C', '\x2D', '\x2E', '\x2F',
   '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3A', '\x3B', '\x3C', '\x3D', '\x3E', '\x3F',
   '\xA1', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4A', '\x4B', '\x4C', '\x4D', '\x4E', '\x4F',
   '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5A', '\xC4', '\xD6', '\xD1', '\xDC', '\xA7',
   '\xBF', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6A', '\x6B', '\x6C', '\x6D', '\x6E', '\x6F',
   '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7A', '\xE4', '\xF6', '\xF1', '\xFC', '\xE0',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E'
};
 
static char  XLAT_IRA_GSM_[256] =
{
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x0A', '\x2E', '\x2E', '\x0D', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x20', '\x21', '\x22', '\x23', '\x02', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2A', '\x2B', '\x2C', '\x2D', '\x2E', '\x2F',
   '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3A', '\x3B', '\x3C', '\x3D', '\x3E', '\x3F',
   '\x00', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4A', '\x4B', '\x4C', '\x4D', '\x4E', '\x4F',
   '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5A', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6A', '\x6B', '\x6C', '\x6D', '\x6E', '\x6F',
   '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7A', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E',
   '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E', '\x2E'
};
Yandex
Объявления
21.11.2014, 00:55     Wide <--> ansi
Ответ Создать тему
Опции темы

Текущее время: 16:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru