从别的博主那 copy过来 记录下
#include <codecvt>
#include <locale>class chs_codecvt : public std::codecvt_byname<wchar_t, char, std::mbstate_t> {public:chs_codecvt() : codecvt_byname("zh_CN.GBK") {}
};int encoding_diff(string str) {wstring_convert<codecvt_utf8<wchar_t>> cv1;wstring wstr = cv1.from_bytes(str);wstring_convert<chs_codecvt> cv2;return str.size() - cv2.to_bytes(wstr).size();
}
用的地方
在Linux环境下需要进行locale-gen
,编辑/etc/locale.gen
,删除zh_CN.GBK
前面的注释符号,并执行locale-gen
命令。
亲测有效