Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сравнивать UNICODE-строки  (Прочитано 4709 раз)
0 Пользователей и 1 Гость смотрят эту тему.
nike
Гость
« : 19-12-2003 11:09 » 

Есть ли для этого какие-нибудь функции.
И еще вопрос, как получить длину unicode-строки в символах, а не в байтах, как тут
Код:

PUNICODE_STRING str = L"abc";
int len = str->Length;

И как их преобразовывают в *char и обратно.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #1 : 19-12-2003 11:18 » 

Цитата

PUNICODE_STRING str = L"abc";

 Это неправильно. Это же структура в C, а не класс в С++, она не может сама себя проинициализировать конструктором. Своими действиями ничего кроме BSOD ты не получишь. К тому же у тебя указатель! Даже в C++, если это не smart pointer, получил бы по рукам.

Надо так

PUNICODE_STRING str;
int   len_in_wchar;
RtlInitUnicodeString(&str,L"My super string");
len_in_wchar = (str->Length)/sizeof WCHAR;


Если сравнить надо в режиме ядра, то
RtlCompareUnicodeString(
    IN PUNICODE_STRING  String1,
    IN PUNICODE_STRING  String2,
    IN BOOLEAN  CaseInSensitive
    );

Цитата

И как их преобразовывают в *char и обратно.


NTSTATUS
  RtlUnicodeStringToAnsiString(
    IN OUT PANSI_STRING  DestinationString,
    IN PUNICODE_STRING  SourceString,
    IN BOOLEAN  AllocateDestinationString
    );


А вобще со структурой UNICODE_STRING можно и напрямую работать, она открытая. Все длинны там в байтах, а Buffer- указатель на массив WCHAR символов.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines