Establecer el “locale” para una aplicación C/C++

A veces puede ser conveniente establecer el “locale” de la manera adecuada en una aplicación.

Por ejemplo, si vamos a utilizar expresiones regulares con caracteres no-ASCII (como la ñ o los caracteres acentuados).

Para establecer el locale, podemos utilizar el código:

const char* locstr = setlocale(LC_ALL, "es_ES.UTF8");

if (locstr == NULL) {
   printf("SETLOCALE ERROR!\n");
}

[Consultar API para setlocale.]

Si como ejemplo, buscamos la expresión regular “ñ” dentro de la cadena “este año es muy frío”, obtendremos un resultado diferente, dependiendo del locale definido:

  1. Si se ha definido el locale “es”:
    start offset: 6
    end offset:  8
    
  2. Si el locale es, por ejemplo, “us”:
    start offset: 6
    end offset:  7
    

Ya conocemos los problemas que presenta C/C++ para tratar caracteres unicode. Pero, al menos, podemos hacer búsquedas y sustituciones de una manera más fiable si el locale definido es el adecuado.

Compartir:
  • Facebook
  • Twitter
  • Google Bookmarks
  • BarraPunto
  • DZone
  • Meneame

Relacionados:

  1. Expresiones regulares C
  2. Aplicación Offline para iPhone

Tags: ,

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes