UTF-8
UTF-8文字列を一文字単位に分割する
UTF-8文字の2バイト目以降は10で始まる。
→0xC0(11000000)でマスキングして0x80(10000000)になってたら2バイト目以降
※入力された文字列が正しいUTF-8文字列になっているかどうかはチェックしていないので注意
#include<iostream> #include<string> #include<vector> using namespace std; std::vector<std::string> split_utf8(const std::string& str) { std::vector<std::string> result; for(size_t i = 0; i < str.size(); i++){ if( (str[i] & 0xC0) == 0x80 ) result[ result.size()-1 ] += str[i]; else result.push_back( std::string()+str[i] ); } return result; } int main(){ string input; while(cin>>input){ vector<string> v = split_utf8(input); for(size_t i=0;i<v.size(); i++) cout << "v[" << i << "]={" << v[i] << "}" << endl; } return 0; }