唐突ですが、Unicode General Categoryで文字列分類したいと思いました。それくらい、UnicodeData.txtをパースしてもよいのですが、せっかくなのでICUを使ってみることにしました。というわけで備忘録です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <unicode/uniset.h>
#include <iostream>
#pragma comment(lib, "icuuc.lib")
 
int main()
{
  UnicodeSet set;
  UErrorCode error = U_ZERO_ERROR;
  set.applyIntPropertyValue(
    UCHAR_GENERAL_CATEGORY, U_UPPERCASE_LETTER, error);
 
  std::cout << std::boolalpha;
  // true
  std::cout << static_cast<bool>(set.contains('A')) << std::endl;
  // false
  std::cout << static_cast<bool>(set.contains('a')) << std::endl;
}

そういえば、エラー処理を忘れていましたが、こんな感じですかね。

スポンサード リンク

この記事のカテゴリ

  • ⇒ ICU入門しましょうか