UTF-8単位で1文字とか - Seeking for my unique color.をC++で書いただけ。あとで自分で使うかもなので。
#include <iostream> #include <string> #include <vector> std::vector<std::string> split_utf8(const std::string& str) { std::vector<std::string> result; std::string tmp; bool first = true; for (size_t i = 0; i <= str.size(); ++i) { if (first || (i != str.size() && (str.at(i) & 0xC0) == 0x80)) { tmp += str.at(i); first = false; continue; } result.push_back(tmp); tmp.clear(); if (i == str.size()) break; tmp += str.at(i); } return result; }; int main(int argc, char *argv[]) { std::string str = "abc日本語"; std::vector<std::string> result = split_utf8(str); for (std::vector<std::string>::iterator it = result.begin(); it != result.end(); it++) { std::cout << *it << std::endl; } }
ちゃんとできてる。
/Users/syou6162/cpp% ./a.out a b c 日 本 語