Всем здрасьте.
Взял я boost::locale для операций с Юникодом, и пока не понял - а как удалить из строки знаки ударения (хотя там может быть и другой мусор однозначно). С наскоку сделал декомпозицию с case folding’ом - не помогает:
#include <boost/locale.hpp>
#include <iostream>
#include <string>
#include <locale>
using namespace boost::locale;
using namespace std;
int main() {
wstring str = L"фыва\u00b4"; // "фыва" с ударением на 'а'
generator gen;
locale::global(gen(""));
wstring res = normalize(str, boost::locale::norm_nfd);
fold_case(res);
cout << str.size() << " " << res.size() << endl;
}
// cout: 5 5
На стековерфлоу есть подобный вопрос, там советовали вручную парсить строку для поиска ударений, это явно странно. Как правильно?