Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2011, 13:25   #31
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

fomikadze

Столкнулся с идеей транслитерации с кирилицы в латиницу. Но понятия не имею как это делается.

Код:
#include <string>
#include <map>

#include <locale>

#include <boost/xpressive/xpressive.hpp>
#include <boost/xpressive/regex_actions.hpp>
namespace xpr = boost::xpressive;

#include <boost/assign/list_of.hpp>
using boost::assign::map_list_of;

typedef std::map<std::string, std::string> Lookup;
Lookup latin = map_list_of
	("а", "a")
	("б", "b")
	("в", "v")
	("г", "g")
	("д", "d")
	("е", "e")
	("ё", "yo")
	("ж", "zh")
	("ы", "i")
	("з", "z")
	("и", "i")
	("й", "y")
	("к", "k")
	("л", "l")
	// и т.д.
	;

void translate(std::string& s)
{
	using namespace xpr;

	local<std::string> sub;
	sregex rx = (a1 = latin)[sub = a1];	

	s = regex_replace(s, rx, sub);
}

int main()
{
	const std::locale cp1251_locale("Russian");
	std::locale::global(cp1251_locale);

	std::string s = "  а в г д е ё ж з ";
	translate(s);

	return 0;
}
Rififi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск