Удобные UTF-8 строки?
От: Neavirc  
Дата: 17.04.08 09:14
Оценка:
Проблема в следующем: очень хочется работать с libmysqlclient, используя utf8-строки для обработки результатов SQL-запроса.

В ответ на SQL-запрос libmysqlclient (предварительно специальным образом пнутый) возвращает utf8-строку в обычном const char* (т.е. один символ в таком массиве может быть представлен несколькими байтами). Такую строку можно вывести в cout, можно даже создать из нее std::string, но вот удобно с такой строкой работать уже нельзя (нельзя, например, вытащить произвольный символ обычным оператором [] и сравнить с символьным литералом).

Поэтому я написал простенький конвертер (потом правда узнал про мега-штуку iconv, но конвертер был уже написан) из utf8 в ucs2 составляющий std::wstring. Но терзают меня смутные сомнения, что есть способ удобно работать с utf8 строками не конвертируя их в ucs2.

Вопросы:

1. Решение с конвертацией utf8 в ucs2 с целью использовать wstring (а потом обратно) — оно вообще нормальное? Мне не нравится.
2. Есть ли возможность используя только стандартную библиотеку удобно работать с utf8-строками?
3. Есть ли utf8 строки в Boost? Очень хочется поработать с boost, но в онлайн документации ничего подходящего не нашел. А повод, чтобы начать был бы хороший.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.