У меня проблема со строкой в С++, которая имеет несколько слов на испанском языке. Это означает, что у меня много слов с акцентами и тильдами. Я хочу заменить их для своих акцентированных коллег. Пример: Я хочу заменить это слово: "había" для habia. Я попытался заменить его напрямую, но заменил метод класса string, но я не мог заставить это работать.
Я использую этот код:
for (it= dictionary.begin(); it != dictionary.end(); it++)
{
strMine=(it->first);
found=toReplace.find_first_of(strMine);
while (found!=std::string::npos)
{
strAux=(it->second);
toReplace.erase(found,strMine.length());
toReplace.insert(found,strAux);
found=toReplace.find_first_of(strMine,found+1);
}
}
Где dictionary
- это карта, подобная этой (с большим количеством записей):
dictionary.insert ( std::pair<std::string,std::string>("á","a") );
dictionary.insert ( std::pair<std::string,std::string>("é","e") );
dictionary.insert ( std::pair<std::string,std::string>("í","i") );
dictionary.insert ( std::pair<std::string,std::string>("ó","o") );
dictionary.insert ( std::pair<std::string,std::string>("ú","u") );
dictionary.insert ( std::pair<std::string,std::string>("ñ","n") );
Строки и toReplace
:
std::string toReplace="á-é-í-ó-ú-ñ-á-é-í-ó-ú-ñ";
Я, очевидно, должен что-то упустить. Я не могу понять. Есть ли библиотека, которую я могу использовать?
Спасибо,