powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Библиотека ICU4C, как подключить
33 сообщений из 33, показаны все 2 страниц
Библиотека ICU4C, как подключить
    #40064690
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Нужна функция поиска подстроки в строке UTF-8.
Нашел, проект ICU, но что-то, видимо, давно не программировал, не могу понять, как его подключить к проекту.
Хотелось бы, просто выдернуть функцию поиска из DLL и все.

Тут нашёл пример кода http://userguide.icu-project.org/collation/icu-string-search-service


Всё, что мы видим - это лишь иллюзия ...
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064704
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да как и любую другую библиотеку - заголовок в include, библиотеку - в список линковки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064731
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрей,
А std.string для кириллицы не подходит? Или кириллица вам узко по задаче?
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064747
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Маслов Андрей,
А std.string для кириллицы не подходит? Или кириллица вам узко по задаче?

Китайский нужен )
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064748
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Да как и любую другую библиотеку - заголовок в include, библиотеку - в список линковки.

Да не получается что-то. Я хотел DLL, без lib. Там слишком много всего тянется.
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064755
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрей
Я хотел DLL, без lib.

Читай про явное связывание. Тут с примером .
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064757
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов АндрейЯ хотел DLL, без lib.

Ну так и линкуй прямо с DLL. GNU link это умеет.

Но зачем тебе ICU? iconv/MultiByteToWideChar не хватит?..
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064758
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрей
Китайский нужен )

В китайском есть понятие uppercase/lowercase? Если нет, то подстрока в UTF-8 это просто подстрока и ищется простым strstr.
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064771
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрей,

Короче, пример на китайском давай)
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064857
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
подстрока в UTF-8 это просто подстрока и ищется простым strstr.
А что делать, если в двух UTF8-строках - две разные нормализации?
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064869
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забить, китайцы, походу, языковыми заморочками не озабочены.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064872
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Dimitry Sibiryakov
подстрока в UTF-8 это просто подстрока и ищется простым strstr.
А что делать, если в двух UTF8-строках - две разные нормализации?

Отдать на аутсорс китайцам. :)
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064929
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люблю топики про кодировки. Вечная тема.
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064960
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрей, без "lib", это к LoadLibrary.
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40064962
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, нормализация может быть только одна.
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065009
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некоторые API различают 4 типа нормализации.
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065014
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
Basil A. Sidorov, нормализация может быть только одна.
Да, нормализация может быть. А может быть разной или не быть вообще.
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065015
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Некоторые API различают 4 типа нормализации.
... которые перечислены в стандарте юникода.
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065364
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Маслов Андрей,

Короче, пример на китайском давай)


Исходная: ²»ÄÍ·³£¬Ò׳嶯
Ищем в ней: Í·

Китайский тут не отображается (
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065370
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я и сказал: обычный strstr.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065382
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрей
Китайский тут не отображается (
Отображается, но через одно место. 真人快打
Надо так писать:
& # 30495 ; & # 20154 ; & # 24555 ; & # 25171 ;
(без пробелов)
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065386
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Как я и сказал: обычный strstr.

Не работает strstr. Он находит символ, а его там нет.
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065387
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрей
Dimitry Sibiryakov
Как я и сказал: обычный strstr.

Не работает strstr. Он находит символ, а его там нет.

Пётр Седов
Маслов Андрей
Китайский тут не отображается (
Отображается, но через одно место. 真人快打
Надо так писать:
& # 30495 ; & # 20154 ; & # 24555 ; & # 25171 ;
(без пробелов)

Вот так выглядит
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065394
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрей, сохраните STRING и SUBSTRING в текстовом файле в кодировке UTF-8 (стандартный виндовый Notepad умеет, кодировка выбирается в save-окне, выпадающий список внизу). Потом приложите этот текстовый файл к сообщению на форуме.

Компилятор -- C++ Builder? В коде используется тип AnsiString (строка из байтов) или WideString (строка из 16-битных элементов)?
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065395
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр Седов
Маслов Андрей, сохраните STRING и SUBSTRING в текстовом файле в кодировке UTF-8 (стандартный виндовый Notepad умеет, кодировка выбирается в save-окне, выпадающий список внизу). Потом приложите этот текстовый файл к сообщению на форуме.

Компилятор -- C++ Builder? В коде используется тип AnsiString (строка из байтов) или WideString (строка из 16-битных элементов)?


Да, Builder.
Файл приложил
Используется, просто, char*
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065396
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
txt ещё в UTF-8
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065397
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё пробовал вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
std::wstring AnsiToWstring(const std::string& input, DWORD locale = CP_UTF8 )
{
      std::wstring buf(input.size(),0);
      MultiByteToWideChar(locale, 0, input.c_str(), (int)input.length(), const_cast<wchar_t*>(buf.data()), input.size());
      return buf;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   std::wstring w_str2_substr = AnsiToWstring (Edit1->Text.c_str());
   std::wstring w_str1_srsstr = AnsiToWstring (Edit2->Text.c_str());
   ShowMessage(wcsstr( w_str1_srsstr.c_str(), w_str2_substr.c_str()) ? "true" : "false");
}



но результат идентичен, он находит символ, хотя не должен
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065398
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрей
Ещё пробовал вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
std::wstring AnsiToWstring(const std::string& input, DWORD locale = CP_UTF8 )
{
      std::wstring buf(input.size(),0);
      MultiByteToWideChar(locale, 0, input.c_str(), (int)input.length(), const_cast<wchar_t*>(buf.data()), input.size());
      return buf;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   std::wstring w_str2_substr = AnsiToWstring (Edit1->Text.c_str());
   std::wstring w_str1_srsstr = AnsiToWstring (Edit2->Text.c_str());
   ShowMessage(wcsstr( w_str1_srsstr.c_str(), w_str2_substr.c_str()) ? "true" : "false");
}




но результат идентичен, он находит символ, хотя не должен



Поменял на CP_ACP вроде заработало
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065399
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрей
txt ещё в UTF-8
Этот файл в кодировке code page 936, а не UTF-8.

Так попробуйте:
Код: plaintext
1.
2.
WideString w_str2_substr = Edit1->Text;
WideString w_str1_srsstr = Edit2->Text;

Наверняка там есть неявное преобразование из AnsiString в WideString (который хранит строку в кодировке UTF-16).

Маслов Андрей
Поменял на CP_ACP вроде заработало
WinAPI-шная функция GetACP возвращает 936?
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065400
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр Седов
Маслов Андрей
txt ещё в UTF-8
Этот файл в кодировке code page 936, а не UTF-8.

Так попробуйте:
Код: plaintext
1.
2.
WideString w_str2_substr = Edit1->Text;
WideString w_str1_srsstr = Edit2->Text;


Наверняка там есть неявное преобразование из AnsiString в WideString (который хранит строку в кодировке UTF-16).

Маслов Андрей
Поменял на CP_ACP вроде заработало
WinAPI-шная функция GetACP возвращает 936?

Я сохранял, как utf-8. Завтра уже посмотрю. Пора отдохнуть.
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065413
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
[Linker Error] Unresolved external 'std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >(int, int, const std::allocator<wchar_t>&)' 




Поместил в библиотеку, теперь не могу понять, какой lib не прилинковал(
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065479
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрей,

up,
Builder 5
...
Рейтинг: 0 / 0
Библиотека ICU4C, как подключить
    #40065544
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скомпилировалось в rad studio 10.3 без проблем
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Библиотека ICU4C, как подключить
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]