Soumettre la recherche
Mettre en ligne
char32_tとXpressiveと
•
1 j'aime
•
1,612 vues
egtra
Suivre
Boost.勉強会#6 札幌で発表したときのものです。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 32
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
IPv6アドレスでお絵かき
IPv6アドレスでお絵かき
Yasuyuki Nakamura
20140625 google earthの最前線
20140625 google earthの最前線
Taichi Furuhashi
تقرير السجون En
تقرير السجون En
التنسيقية المصرية للحقوق والحريات
Climbing Off The Ladder, Before We Fall Off
Climbing Off The Ladder, Before We Fall Off
C4Media
I16092.00_E501-E501
I16092.00_E501-E501
Samantha Merritt
Oscars after - party
Oscars after - party
Makala D.
מנור גינדי בשבוע האופנה תל אביב
מנור גינדי בשבוע האופנה תל אביב
Manor Gindi מנור גינדי
Virální marketing
Virální marketing
Pavel Herman
Recommandé
IPv6アドレスでお絵かき
IPv6アドレスでお絵かき
Yasuyuki Nakamura
20140625 google earthの最前線
20140625 google earthの最前線
Taichi Furuhashi
تقرير السجون En
تقرير السجون En
التنسيقية المصرية للحقوق والحريات
Climbing Off The Ladder, Before We Fall Off
Climbing Off The Ladder, Before We Fall Off
C4Media
I16092.00_E501-E501
I16092.00_E501-E501
Samantha Merritt
Oscars after - party
Oscars after - party
Makala D.
מנור גינדי בשבוע האופנה תל אביב
מנור גינדי בשבוע האופנה תל אביב
Manor Gindi מנור גינדי
Virální marketing
Virální marketing
Pavel Herman
פרסום באינסטגרם | מקאן דיגיטל
פרסום באינסטגרם | מקאן דיגיטל
McCANN DIGITAL
Structurarea unei cotatii in mai multe sectiuni
Structurarea unei cotatii in mai multe sectiuni
OdooRomania
Facebook rinkodara Lietuvos elektroniniams verslams
Facebook rinkodara Lietuvos elektroniniams verslams
Vladas Sapranavicius
構造化オーバーレイネットワークに適した分散双方向連結リストDDLL
構造化オーバーレイネットワークに適した分散双方向連結リストDDLL
Kota Abe
EL BOSQUE ENCANTADO
EL BOSQUE ENCANTADO
Verónica Nicolás Nicolás
resumeh aali1
resumeh aali1
Hossein Nourian, DBA
EU road fatalities - age distribution
EU road fatalities - age distribution
PODIS Ltd
Transformation or Transition
Transformation or Transition
Mike Pounsford
Buyer Persona - Key to B2B online marketing success
Buyer Persona - Key to B2B online marketing success
ShimonBen
J350 Social Media Intro
J350 Social Media Intro
University of Oregon
Plan de-clase
Plan de-clase
Ely Morales
Educar valores a traves del futbol
Educar valores a traves del futbol
Diego Menino
The Virtual Strike: on pitches in advertising
The Virtual Strike: on pitches in advertising
Zigurds Zakis
小黄鸭和鳄鱼
小黄鸭和鳄鱼
Sharon Gal Or
Tautas ataudzes mērķi NAP2020 un to sasniegšanas gaita
Tautas ataudzes mērķi NAP2020 un to sasniegšanas gaita
Pārresoru kordinācijas centrs (PKC)
شهادة جامعة دمشق
شهادة جامعة دمشق
Mohammad Shammout
Vi lever for å levere
Vi lever for å levere
Martin Koksrud Bekkelund
Psych 100B
Psych 100B
Caren Nguyen
サーバ構築自動化 On aws sqaleの場合
サーバ構築自動化 On aws sqaleの場合
Ryo Kuroda
Bear gss experiences shareing
Bear gss experiences shareing
DesBear Li
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
egtra
エクストリームC++11/14プログラミング
エクストリームC++11/14プログラミング
egtra
Contenu connexe
En vedette
פרסום באינסטגרם | מקאן דיגיטל
פרסום באינסטגרם | מקאן דיגיטל
McCANN DIGITAL
Structurarea unei cotatii in mai multe sectiuni
Structurarea unei cotatii in mai multe sectiuni
OdooRomania
Facebook rinkodara Lietuvos elektroniniams verslams
Facebook rinkodara Lietuvos elektroniniams verslams
Vladas Sapranavicius
構造化オーバーレイネットワークに適した分散双方向連結リストDDLL
構造化オーバーレイネットワークに適した分散双方向連結リストDDLL
Kota Abe
EL BOSQUE ENCANTADO
EL BOSQUE ENCANTADO
Verónica Nicolás Nicolás
resumeh aali1
resumeh aali1
Hossein Nourian, DBA
EU road fatalities - age distribution
EU road fatalities - age distribution
PODIS Ltd
Transformation or Transition
Transformation or Transition
Mike Pounsford
Buyer Persona - Key to B2B online marketing success
Buyer Persona - Key to B2B online marketing success
ShimonBen
J350 Social Media Intro
J350 Social Media Intro
University of Oregon
Plan de-clase
Plan de-clase
Ely Morales
Educar valores a traves del futbol
Educar valores a traves del futbol
Diego Menino
The Virtual Strike: on pitches in advertising
The Virtual Strike: on pitches in advertising
Zigurds Zakis
小黄鸭和鳄鱼
小黄鸭和鳄鱼
Sharon Gal Or
Tautas ataudzes mērķi NAP2020 un to sasniegšanas gaita
Tautas ataudzes mērķi NAP2020 un to sasniegšanas gaita
Pārresoru kordinācijas centrs (PKC)
شهادة جامعة دمشق
شهادة جامعة دمشق
Mohammad Shammout
Vi lever for å levere
Vi lever for å levere
Martin Koksrud Bekkelund
Psych 100B
Psych 100B
Caren Nguyen
サーバ構築自動化 On aws sqaleの場合
サーバ構築自動化 On aws sqaleの場合
Ryo Kuroda
Bear gss experiences shareing
Bear gss experiences shareing
DesBear Li
En vedette
(20)
פרסום באינסטגרם | מקאן דיגיטל
פרסום באינסטגרם | מקאן דיגיטל
Structurarea unei cotatii in mai multe sectiuni
Structurarea unei cotatii in mai multe sectiuni
Facebook rinkodara Lietuvos elektroniniams verslams
Facebook rinkodara Lietuvos elektroniniams verslams
構造化オーバーレイネットワークに適した分散双方向連結リストDDLL
構造化オーバーレイネットワークに適した分散双方向連結リストDDLL
EL BOSQUE ENCANTADO
EL BOSQUE ENCANTADO
resumeh aali1
resumeh aali1
EU road fatalities - age distribution
EU road fatalities - age distribution
Transformation or Transition
Transformation or Transition
Buyer Persona - Key to B2B online marketing success
Buyer Persona - Key to B2B online marketing success
J350 Social Media Intro
J350 Social Media Intro
Plan de-clase
Plan de-clase
Educar valores a traves del futbol
Educar valores a traves del futbol
The Virtual Strike: on pitches in advertising
The Virtual Strike: on pitches in advertising
小黄鸭和鳄鱼
小黄鸭和鳄鱼
Tautas ataudzes mērķi NAP2020 un to sasniegšanas gaita
Tautas ataudzes mērķi NAP2020 un to sasniegšanas gaita
شهادة جامعة دمشق
شهادة جامعة دمشق
Vi lever for å levere
Vi lever for å levere
Psych 100B
Psych 100B
サーバ構築自動化 On aws sqaleの場合
サーバ構築自動化 On aws sqaleの場合
Bear gss experiences shareing
Bear gss experiences shareing
Plus de egtra
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
egtra
エクストリームC++11/14プログラミング
エクストリームC++11/14プログラミング
egtra
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
egtra
Casablanca
Casablanca
egtra
Firefox拡張機能を始める
Firefox拡張機能を始める
egtra
ATLに見る魔術
ATLに見る魔術
egtra
再変換 (K2Editor)
再変換 (K2Editor)
egtra
C++11概要 ライブラリ編
C++11概要 ライブラリ編
egtra
Boost.Range入門
Boost.Range入門
egtra
Boost.Graph入門
Boost.Graph入門
egtra
Plus de egtra
(10)
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
エクストリームC++11/14プログラミング
エクストリームC++11/14プログラミング
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
Casablanca
Casablanca
Firefox拡張機能を始める
Firefox拡張機能を始める
ATLに見る魔術
ATLに見る魔術
再変換 (K2Editor)
再変換 (K2Editor)
C++11概要 ライブラリ編
C++11概要 ライブラリ編
Boost.Range入門
Boost.Range入門
Boost.Graph入門
Boost.Graph入門
char32_tとXpressiveと
1.
char32_tとXpressiveと H.23/11/05 Egtra Boost.勉強会#6 札幌
2.
char32_tとXpressiveと • Egtra
– @egtra – http://dev.activebasic.com/egtra/
3.
char32_t…… • とchar16_t
– C++11の新しいデータ型 – typedefではない – UTF‐32とUTF‐16 – 4バイトと2バイト
4.
char32_tとchar16_t • 新しいデータ型
– void f(char c); – void f(wchar_t c); – void f(char16_t c); – void f(char32_t c);
5.
char32_tとchar16_t • リテラル
– char c = 'a'; – wchar_t c = L'a'; – char16_t c = u'a'; – char32_t c = U'a';
6.
char32_tとchar16_t • リテラル
– char s1[] = "hoge"; – wchar_t s2[] = L"hoge"; – char16_t s3[] = u"hoge"; – char32_t s4[] = U"hoge"; – char s5[] = u8"hoge";
7.
char32_tとchar16_t • リテラル
– char const* s1 = "foo"; – wchar_t const* s2 = L"foo"; – char16_t const* s3 = u"foo"; – char32_t const* s4 = U"foo"; – char const* s5 = u8"foo";
8.
char32_tとchar16_t • std::basic_string<>
– std::string – std::wstring – std::u16string – std::u32string
9.
char32_tとchar16_t • どこで使える?
– GCC 4.4/4.5 – Clang 2.9 – Visual C++ 2010?
10.
char32_tとchar16_t • Visual C++
2010 – typedef!!! – v11(次バージョン)でも変わらず – u""やU""やu8""も非対応
11.
char32_tとchar16_t • 以上
– 君も今日からchar16/32_t使い – UTF‐16/32なデータのところに char16/32_t使おう!
12.
char32_tとchar16_t • 以上
– 君も今日からchar16/32_t使い – 私は使っていません •Visual C++ 2010なので……
13.
char32_tとchar16_t • 以上と思った?
– 足りないものだらけですね
14.
char32_tとchar16_t (続) • 入出力
– u16streamとかu32streamとか ありません – 適当にtypedefしましょう
15.
char32_tとchar16_t (続) • <codecvt>
– codecvt_utf8 •UTF‐8とUTF‐32 – codecvt_utf16 •UTF‐16とUTF‐32 – codecvt_utf8_utf16
16.
char32_tとchar16_t (続) • UTF‐8のファイルをchar32_tとして読む
typedef basic_ifstream<char32_t> u32ifstream; u32ifstream ifs("hoge.txt"); locale loc(locale(), new codecvt_utf8<char32_t>()); ifs.imbue(loc);
17.
char32_tとchar16_t (続) • UTF‐8のファイルをchar32_tとして読む
typedef basic_ifstream<char32_t> u32ifstream; u32ifstream ifs("hoge.txt"); – 実はこれでいける(はず)
18.
char32_tとchar16_t (続) • なぜ?
std::locale::classic() – 下を持っている •codecvt<char, wchar_t> •codecvt<char, char16_t> •codecvt<char, char32_t>
19.
char32_tとchar16_t (続) • 特殊化
codecvt<char, char16_t> codecvt<char, char32_t> – UTF‐8とUTF‐16/32との変換 – これで揃った?
20.
char32_tとchar16_t (続) • codecvtで可能な変換
– char(マルチバイト) ⇄ wchar_t (C++98/03) – char (UTF‐8) ⇄ UTF‐16 – char (UTF‐8) ⇄ UTF‐32 – UTF‐16 ⇄ UTF‐32
21.
char32_tとchar16_t (続) • マルチバイトとUTFの変換は?
–ない! – iconvなどを使いましょう
22.
char32_tとchar16_t (続) • wchar_tは?
– UTF‐16/32とは限らない •例: ja_JP.eucJPな*BSD
23.
char32_tとchar16_t (続) • マルチバイトとUTFの変換は?
– 解その2: Boost.Locale? •今回は説明しません
24.
char32_tとchar16_t (続) • std::basic_regex<>
– charとwchar_t版しかありません •なのでBoost.Regex(ICU版)を 使いましょう
25.
char32_tとchar16_t (続) • 以上
26.
おまけ • Boost.XpressiveでUTF‐32の 文字列を使いたい
– やっつけで対応させた
27.
おまけ • traitsクラスを作る
– やっつけなので null_regex_traits<char32_t> から派生 struct u32_traits : …… {
28.
おまけ • traitsクラスを作る
struct locale_type {};
29.
おまけ • traitsクラスを作る
enum char_class { InvalidClass = 0, Lu = 1, Ll = 1 << 1, ……
30.
おまけ • traitsクラスを作る
NewLine = 1 << ……, }; typedef boost::uint_value_t< NewLine>::least_t char_class_type;
31.
おまけ • traitsクラスを作る
private: static std::unordered_map< char_type, char_class_type> LoadCategoryMap(); – isctype内で使用
32.
おまけ • traitsクラスを作る namespace
Property { boost::proto::terminal< boost::xpressive::detail:: posix_charset_placeholder>::type const L = {{"L", false}}; ……
Télécharger maintenant