元ネタ: http://qiita.com/dongri/items/041ff3e7dde6c99beeb0
#include <iostream>
#include <codecvt>
#include <locale>
int main()
{
std::cout << std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t>().to_bytes(U'生' & U'死') << std::endl;
}
ここから確認できます
http://ideone.com/0lPZ8J
u8"生"
と u8"死"
(どっちも char[4]
) を要素毎に &
演算できれば、なかなか実装されていない <codecvt>
とか使う必要がなかったのですが、ワンライナーでうまいこと書けなかったのでこんな感じになりました。
当初、std::transform
を使おうとしてたのですが、範囲の終端や変換結果の格納先を指定する必要があるから、そのための変数を宣言しておく必要があるので。