Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # C++でutf8 vector containerを作る
- ## 簡単に実装できない理由
- 任意のエンコーディング方式にC++が対応しており、std::string形式だとわけわかんないことになります
- そこで、std::wstring_convertというクラスを利用して、std::wstringに変換した後、スライス操作等ができる様になります
- スライスした後に、再び、std::stringに戻すことで、std::coutなどの標準入出力に対応することができ、普段慣れているコンテナとして利用することができます
- ## minimal sample code
- ```cpp
- #include <string>
- #include <tuple>
- #include <vector>
- #include <iostream>
- #include <locale>
- #include <codecvt>
- void tokenize(const std::string& input) {
- wcout.imbue(std::locale(""));
- std::string context = u8"映画は苦手だったのですが、母の誘いで見に行きました。後半部分が良いです。";
- std::wstring_convert<std::codecvt_utf8<wchar_t>,wchar_t> cv;
- std::wstring wsmessage = cv.from_bytes(context);
- wcout << wsmessage << endl;
- std::vector<std::string> contain;
- int size = contain.size();
- for(auto c:wsmessage) cout << cv.to_bytes(c) << " ";
- // slicing
- }
- ```
Add Comment
Please, Sign In to add comment