Как преобразовать строковый регистр в верхний / нижний регистр (Юникод ОБЯЗАТЕЛЬНО; кириллица, греческий и т. Д.)?

Я долго искал способ, чтобы преобразовать строку NON-LATIN в верхний и / или нижний регистр. Кириллица, греч. И ко. Письменные Системы. Другими словами: преобразуйте все символы, которые поддерживают верхний / нижний регистр, в верхний или нижний.

ПРИМЕЧАНИЕ: QString из Qt Framework поддерживает эту функцию. Но я ищу не-Qt решение.

Я пробовал этот кусок кода, и он поддерживает только Basic-Latin (a-z, A-Z), и не поддерживается. (???) Почему такой минималистичный?

#include <iostream>
#include <string>
#include <algorithm>

#include <boost/algorithm/string.hpp>

using std::cout;
using std::cerr;
using std::endl;
using std::cin;
typedef std::string string;

static string text;

int main(void)
{
cout << "Enter String: ";
cin >> text;

for (size_t i = 0; i < text.length(); i++)
text[i] = std::toupper(text.at(i));

cout << "Upper Case (libstdc++): " << text << endl;
cout << "Upper Case (libboost):  " << boost::to_upper_copy(text) << endl;
}

Я скачал исходный код Qt, но для меня, как для хобби-разработчика, я не могу найти реализации QString, чтобы увидеть, что здесь происходит. И почему он поддерживает только ВСЕ.

Возможно ли использовать стандартный или ускоренный способ преобразования toupper или tolower всех этих персонажей, которые его поддерживают?

Сторонняя библиотека тоже подойдет.

PS: простите за мой английский.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]