Foros del Web » Programación para mayores de 30 ;) » C/C++ »

usar el enter en switch-case-defaul con utf8

Estas en el tema de usar el enter en switch-case-defaul con utf8 en el foro de C/C++ en Foros del Web. cuando quiero usar enter en un case lo hago de la siguiente manera: Cita: case '\n': pero la librería gráfica con la que estoy trabajando ...
  #1 (permalink)  
Antiguo 07/01/2012, 18:41
 
Fecha de Ingreso: julio-2011
Ubicación: Querétaro México
Mensajes: 34
Antigüedad: 9 años
Puntos: 0
Pregunta usar el enter en switch-case-defaul con utf8

cuando quiero usar enter en un case lo hago de la siguiente manera:

Cita:
case '\n':
pero la librería gráfica con la que estoy trabajando utiliza utf8 por lo tanto no puedo poner ''\n" por que es de ascii.

¿de qué manera puedo hacer lo mismo de arriba pero con utf8?


INFORMACIÓN ADICIONAL
por si sirve de algo, la librería con la que trabajo es allegro4.2, compilo en g++ con terminal linux.
  #2 (permalink)  
Antiguo 08/01/2012, 12:52
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 8 años, 6 meses
Puntos: 25
Respuesta: usar el enter en switch-case-defaul con utf8

segun tengo entendido el caracter \n lo usa windows para determinar una nueva linea, no es codigo ASCII, si me equivoco que me corrijan.

Tambien estuve viendo por ahi que utf8 es complatible con ASCII, por lo que si usarias el codigo ASCII para ver si se presiono el enter tendria que funcionar.

proba con esto:

Código :
Ver original
  1. case 13:

13 me parece que es el codigo ASCII del enter

saludos.
  #3 (permalink)  
Antiguo 08/01/2012, 13:25
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 12 años, 5 meses
Puntos: 260
Sonrisa Respuesta: usar el enter en switch-case-defaul con utf8

Hola,

El problema no es de UTF, el caracter de nueva línea en cualquier tabla de caracteres conocida es el número [10] y el retorno de carro es el numero [13]. En Windows se utiliza la combinación [10, 13] para identificar un salto de línea y en Linux se utliza solamente el [10]. En UTF, ASCII y cualquier otra tabla el código de nueva línea es el [10].

El compilador de C utiliza los códigos de escape para facilitar la escritura de esos códigos, puesto que no tienen representación visual en la tabla ASCII (técnicamente no puedes ver un retorno de carro). Así que los 'escape codes' de C son \n para el código char 10 y \r para el código char 13.

Cuando escribes '\n' en el código fuente de un programa el compilador se encarga de convertirlo en el char con código [10] y escribirlo en el código objeto. Es decir al programa compilado no le llega un '\n' sino le llega el código binario que lo identifica con el char con código [10].

Y no es lo mismo poner:

Código C:
Ver original
  1. case '\n':
  2. case 10:

En el primer caso estas comparando un char en el segundo un int.

Saludos,

Etiquetas: switch-case-default, utf-8
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:21.