Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Библиотека ICU4C, как подключить  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
txt ещё в UTF-8

К сообщению приложен файл (chn.txt - 22bytes) cкачать
24 апр 21, 02:27    [22313496]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека ICU4C, как подключить  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
Ещё пробовал вот так
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");
}


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

Сообщение было отредактировано: 24 апр 21, 02:25
24 апр 21, 02:32    [22313497]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека ICU4C, как подключить  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
Маслов Андрей
Ещё пробовал вот так
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 вроде заработало
24 апр 21, 02:41    [22313498]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека ICU4C, как подключить  [new]
Пётр Седов
Member

Откуда: Санкт-Петербург
Сообщений: 706
Маслов Андрей
txt ещё в UTF-8
Этот файл в кодировке code page 936, а не UTF-8.

Так попробуйте:
WideString w_str2_substr = Edit1->Text;
WideString w_str1_srsstr = Edit2->Text;
Наверняка там есть неявное преобразование из AnsiString в WideString (который хранит строку в кодировке UTF-16).

Маслов Андрей
Поменял на CP_ACP вроде заработало
WinAPI-шная функция GetACP возвращает 936?
24 апр 21, 02:50    [22313499]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека ICU4C, как подключить  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
Пётр Седов
Маслов Андрей
txt ещё в UTF-8
Этот файл в кодировке code page 936, а не UTF-8.

Так попробуйте:
WideString w_str2_substr = Edit1->Text;
WideString w_str1_srsstr = Edit2->Text;

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

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

Я сохранял, как utf-8. Завтра уже посмотрю. Пора отдохнуть.
24 апр 21, 03:01    [22313500]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека ICU4C, как подключить  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
[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 не прилинковал(

Сообщение было отредактировано: 24 апр 21, 13:08
24 апр 21, 13:15    [22313556]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека ICU4C, как подключить  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
Маслов Андрей,

up,
Builder 5

К сообщению приложен файл (src.zip - 14Kb) cкачать
24 апр 21, 19:33    [22313702]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека ICU4C, как подключить  [new]
Маслов Андрей
Member

Откуда: Москва
Сообщений: 1178
Скомпилировалось в rad studio 10.3 без проблем
25 апр 21, 02:24    [22313813]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / C++ Ответить