如何在C++(或C)中将所有重音字母更改为普通字母?
通过这个,我的意思是eéèêaàäâçc会成为一样eeeeaaaacc.
我试过手动解析字符串并逐个替换它们中的每一个,但我认为必须有一个更好/更简单的方法,我不知道(这会保证我不会忘记任何重音字母) .
我想知道标准库中是否已有地图,或者是否所有重音字符都可以使用某些数学函数轻松映射到"普通"字母(例如floor(charCode-131/5) + 61)).
小智 8
char* removeAccented( char* str ) {
char *p = str;
while ( (*p)!=0 ) {
const char*
// "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
tr = "AAAAAAECEEEEIIIIDNOOOOOx0UUUUYPsaaaaaaeceeeeiiiiOnooooo/0uuuuypy";
unsigned char ch = (*p);
if ( ch >=192 ) {
(*p) = tr[ ch-192 ];
}
++p; // http://stackoverflow.com/questions/14094621/
}
return str;
}
Run Code Online (Sandbox Code Playgroud)