如何在文本中找到西里尔字母

时间:2021-01-19 13:59:32

标签: c++ c++builder

我试图在这样的文本中找到单词 "пак"180121-5пак。有西里尔符号。

我尝试使用 Pos() 函数,但没有效果。该函数返回值 0。

bool f( String Zal )
{
  if ( Zal.Pos(_D("пак")) != 0 || Zal.Pos(_D("УТ")) != 0 )
  {
   smth
  }
  return true;
}

我尝试使用 UnicodeString("пак")AnsiString("пак")UTF8String("пак"),但没有结果。

1 个答案:

答案 0 :(得分:0)

"пак" 是一个 narrow 字符串文字,因此受源文件保存为的字符集以及编译器用于解析源文件的字符集的影响。由于 UnicodeString 包含一个 UTF-16 字符串,您应该使用 wide 字符串文字代替,例如:

Zal.Pos( L"пак" )

但是,UnicodeString 在不同平台上使用不同的数据类型(Windows 上的 wchar_t,Posix 上的 char16_t),因此您应该使用 _D() 宏来映射您的字符串您的项目所针对的每个平台的正确数据类型的字面量,例如:

Zal.Pos( _D("пак") )
相关问题