![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Как лучше преобразовать? Быстрей и короче? И при этом из utf8 в анси.
Это сообщение отредактировал(а) ТарасАтавин - 27.8.2013, 15:16 -------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
ТарасАтавин, wstring содержит строку не в кодировке utf8. Если тебе необходимо преобразовать wstring в ANSI, то используй функцию wcstombs.
|
|||
|
||||
| ТарасАтавин |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Добавлено через 2 минуты и 15 секунд size измеряется в символах? Добавлено через 8 минут и 57 секунд
Это сообщение отредактировал(а) ТарасАтавин - 28.8.2013, 07:55 -------------------- Не так всё плохо, как оно есть на самом деле. |
||||
|
|||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Вероятно в одной из 2х(4х) байтных кодировок Добавлено через 2 минуты и 41 секунду
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
wcstombs - расшифровывается как wide-char string to multi-byte string. Multi-byte string - это локальная 8-ми битная кодировка. В Windows - это кодировки вида Windows-1251; а в *nix: utf8, koi8-r, latin1 и пр., задается переменными среды LANG и LC_*. |
||||
|
|||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
widestring - Unicode UTF - расшифровывается как "Unicode Transformation Format" или что-то навроде. Если хочешь преобрзовать из UTF в Unicode, to Multibyte кодировку преобразуешь к WideString преобразованием mcztowcs, обратным к подсказанному тебе wcstomcs Multibyte это не 8-битная кодировка, это как минимум 8битная кодировка. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
||||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
ANSI кодировкой в Windows называются родные (по крайней мере для русскоязычной винды) Windows1251 (не путь с разными KOI8, Ascii).
Добавлено через 9 минут и 26 секунд Тут сам запутаешься. Я вот видел в MSDN и такой вариант, кокретно прописанный как AnsiString Самая веселуха начинается при написании ActiveX-компонент, где ещё подступает BSTR (тип строк из Бейсика) и начинаются порой полёты по конвертации из ладно бы ещё Юникода в BSTR, а то ведь и наоборот, и попутно там мелькает MFCшный тип CString, ранее выдвигавшийся как возможный будущий стандарт -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
size_t, наверно, просто знаковое целое число. И эта.. делай как тебе сказали. Объяснять тебе придётся действительно долго. Прими как должное, что в wstring используется в Винде Юникод, а UTF это надостроечный формат к Юникоду. ANSI в винде - Windows CP1251. ты же работаешь в рамках стандарта С++ c wstring и string, и работай с ними. Компилятор тебе выдаст, где корректное, а где нет преобразование. а std::getline работает только для простых string, а не для wstring. Об таких словах как ANSI, ASCII или OEM кодировки временно забудь. Есть пара рецептов, как перейти от одного типа строк к другим, или от одной кодировки в к другой. Их и используй, когда понадобится (бывает это, к счастью, редко), это избавит тебя от излишней головной боли. Это сообщение отредактировал(а) akizelokro - 28.8.2013, 11:07 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
беззнаковое. sizeof(size_t) >= sizeof(void*). |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |