Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2013, 19:48   #1
Cnukep
 
Регистрация: 04.07.2013
Сообщений: 9
По умолчанию > Русские символы Visual Studio

Здравствуйте.
Проект на си
пишется в Visual Studio 08


Общий смысл проблемы таков :

на вход поступают строки данных в кодировке UTF-8
их нужно разбирать и т.д.

В строке кроме английского алфавита присутствуют и русские буквы
откуда проистекают следующие проблемы :

1.Отображается абракадабра при отладке в VS (как сказать студии шта он не прав?)
2.Слово в 4 символа занимает 8ячеек в массиве char
3.При разборе строки стандартными ф-ями си из ctype.h типа isalpha() происходят ошибки

проблема вывода текста на консоль решилась

SetConsoleCP(65001);
SetConsoleOutputCP(65001);
+ выбор шрифта Lucidia...
Cnukep вне форума Ответить с цитированием
Старый 04.07.2013, 19:51   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

так и в чем проблема то?
перевели бы в UTF16(точнее подмножества UCS2 что применен в винде)
там стабильно каждый символ это два байта wchar_t.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.07.2013, 21:58   #3
Cnukep
 
Регистрация: 04.07.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
так и в чем проблема то?
перевели бы в UTF16(точнее подмножества UCS2 что применен в винде)
там стабильно каждый символ это два байта wchar_t.
получив данные их нужно максимально быстро обработать и отреагировать на них соответственно

какой способ здесь будет амым быстрым?
Cnukep вне форума Ответить с цитированием
Старый 04.07.2013, 22:03   #4
Cnukep
 
Регистрация: 04.07.2013
Сообщений: 9
По умолчанию

и как заставить студию адекватно воспринимать строки в отладчике?

подозреваю что где-то пару галок надо поставить
Cnukep вне форума Ответить с цитированием
Старый 05.07.2013, 13:09   #5
Cnukep
 
Регистрация: 04.07.2013
Сообщений: 9
По умолчанию

Интересно что в описании длл-ки которая шлет данные

функция - приемник описывается как

typedef bool (*tcallback)(BYTE* pData);


тоесть получаем * на BYTE а байт-это unsigned char

значит ли это что код любого символа здесь вмещается в unsigned char?
а если нет почему был вабран именно BYTE а байт-это unsigned char а не двухбайтовый w_char?
Cnukep вне форума Ответить с цитированием
Старый 05.07.2013, 13:23   #6
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
значит ли это что код любого символа здесь вмещается в unsigned char?
Не обязательно.

Цитата:
а если нет почему был вабран именно BYTE а байт-это unsigned char а не двухбайтовый w_char?
Потому что функция принимает байты, а не символы, строки, ...
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 05.07.2013, 13:55   #7
Cnukep
 
Регистрация: 04.07.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Ezhik Kihze Посмотреть сообщение
Не обязательно.


Потому что функция принимает байты, а не символы, строки, ...
если я все правильно понял , то :

1. Приходят данные в виде unsigned char где некоторые комбинации соседних байтов(если кирилица) нужно собирать в код 1 символа
2. для работы с такими данными без перегонки строки в двухбайтовый wchar_t никак не обойтись
если это так какой способ будет самым быстрым? MultiByteToWideChar ?
3. стандартные ф-ии str (* char) ctype.h никак не пригодны - юникод это ф-ии типа size_t wcslen(const wchar_t* szString) ?
Cnukep вне форума Ответить с цитированием
Старый 05.07.2013, 15:44   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от Cnukep Посмотреть сообщение
2. для работы с такими данными без перегонки строки в двухбайтовый wchar_t никак не обойтись
Это вопрос или утверждение? Все зависит от того, что надо делать с данными.
waleri вне форума Ответить с цитированием
Старый 05.07.2013, 16:06   #9
Cnukep
 
Регистрация: 04.07.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Это вопрос или утверждение? Все зависит от того, что надо делать с данными.
это вопрос насчет правильности моего понимания

данные xml
парсить его надо
Cnukep вне форума Ответить с цитированием
Старый 05.07.2013, 18:18   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Для того, чтоб парсить XML вовсе не надо конвертировать поток.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Русские буквы в \u символы J-Max Общие вопросы Delphi 4 01.07.2012 19:35
Русские символы в консоле pimple2006 Общие вопросы Delphi 2 16.12.2011 10:50
Русские символы Akord Общие вопросы C/C++ 0 26.09.2010 11:17
Expression Studio и Visual Studio 2010 ждать ли русские версии? Casper-SC Свободное общение 31 25.05.2010 14:31
как конвертнуть русские символы.(Visual Studio.Net) reyn90 Помощь студентам 0 05.01.2010 13:32