C++でutf-8のマルチバイト文字毎に区切る

多分使わない方がいいです

#include<bits/stdc++.h>
using namespace std;

void decomp(const string &s, vector<string> &v) {
	v.clear();
	int N = s.size();
	for (int i = 0, l; i < N; i += l) {
		l = 1;
		while (s[i] & 1 << 7 - l)
			++l;
		v.push_back(s.substr(i, l));
	}
}

int main() {
	vector<string> v;
	decomp("こんにちは, 世界!", v);

	for (auto c : v)
		cout << c << '\n';
}

出力

こ
ん
に
ち
は
,
 
世
界
!

この記事が気に入ったらサポートをしてみませんか?