/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Cast Char to int

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
pandemolde



Registrado: 28 Jul 2005
Mensajes: 15

MensajePublicado: 26/08/2005 3:18 am
Título: Cast Char to int

Hola a tod@s. Estoy utilizando la libreria libxml para leer un xml y sacar unos valores. El problema es que uno de los valores es un número, pero lo tengo almacenado en una variable tipo xmlChar. Lo he intentado con int(variable) pero sigue sin ser un entero. ¿Alguien podría decirme como convertirlo?. Muchas gracias por todo y saludos!!
Volver arriba
Fideu



Registrado: 13 Ago 2005
Mensajes: 19

MensajePublicado: 26/08/2005 8:18 am
Título:

el entero es una unidad mas pequeña que el char, por lo que puedes pasar de

entero a char
entero a boolean
entero a string
entero a object

pero de una unidad grande a una unidad mas pequeña creo que no, al menos eso tengo entendido yo...
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 4379
Ubicación: Mexico

MensajePublicado: 26/08/2005 8:21 am
Título:

Solo para estar seguros, estas realizando el casting de esta forma:
Código:
(int) variable

¿Estoy en lo cierto?

En todo caso deberias de revisar los headers (o mejor todavia la documentacion) de la biblioteca que estas utilizando para verificar que xmlChar sea un alias de un tipo entero, si ese es el caso no deberias de tener problema alguno al realizar el casting.

Esto por supuesto si el lenguaje que estas utilizando es C ...

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
N4x0



Registrado: 27 Ene 2005
Mensajes: 18
Ubicación: Coslada - Madrid

MensajePublicado: 27/08/2005 1:14 am
Título:

En C++ la función seria atoi(char). Preguntas en C++ o en XML?

Saludos.
_________________
Ignacio Soto
Volver arriba
pandemolde



Registrado: 28 Jul 2005
Mensajes: 15

MensajePublicado: 07/09/2005 4:35 am
Título:

finalmente me he fabricado una función que lo haga. Por si alguien tiene el mismo problema dejo por aquí el código. Muchas gracias por todo y saludos!!

int xmlCharToInt(xmlChar * str){
int ans =0;
while(str[0] != '\0'){
ans *=10;
ans += (str[0] - '0');
str++;
}//fin while
return ans;
}//fin xmlCharToInt
Volver arriba
soloc



Registrado: 25 Ene 2005
Mensajes: 212
Ubicación: Bolivia

MensajePublicado: 08/09/2005 10:11 am
Título:

Me parece muy bien que hayas implementado tu propia función para convertir un texto en un entero, pero no fuiste muy claro al expresar el problema que tenias. Cuando utilizas XML almacenas los valores en un archivo de texto y lo que define el tipo de dato son los tags propios de XML. En realidad tu problema es que quieres convertir "1234" en 1234. O sea de cadena de texto a entero.

Existe una función en C y C++ que realiza este tipo de conversión y es atoi() (ASCII TO INTEGER) siempre y cuando el valor sea un entero. Para un entero largo utiliza atol() (ASCII TO LONG).

Ej.
Código:

#include <stdlib.h>

...
int Entero;

Entero = atoi("1234");


Saludos Wink
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 4379
Ubicación: Mexico

MensajePublicado: 08/09/2005 10:31 am
Título:

En el caso de que se requiera verificar la existencia de errores una mejor opcion es strtol (stdlib.h).

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
fralex



Registrado: 11 Jul 2005
Mensajes: 112

MensajePublicado: 01/10/2005 10:39 pm
Título: que bueno este foro.....

En verdad que bueno este foro,lo que pasa es que hace un par de dias habia publicado un post en el foro de principiantes pidiendo ayudad por algo similar a esto, solo que era que tenia que comparar dos cedulas de identidad para ordenarlas en una lista doble solo que en vez de ser numericas se leian como cadenas de caracteres,total que desconocia de alguna función capaz de hacer esto asi que me dio por intentar hacer una que lo hiciera,aqui les dejo un link hacia ese post pa que vean la maroma que intentaba(http://www.elrincondelc.com/portal/modules.php?name=Forums&file=viewtopic&t=3897,espero que el link este bien puesto es primera vez que pongo uno;total que me estaba haciendo un ocho intentando solucionarlo pero no pude;y ahora me pongo a leer mensajes viejos y me encuentro con este Surprised y con la función atoi() gracias soloc aunque no haya sido una respuesta directa a mi...
Y bueno ya implemente la función atoi() a mi código y ahora corre perfecto...

ahora voy a estar más pendiente de leer los post ya publicados en busca de una respuesta antes de preguntar y si ya habia leido las reglas pero no les habia parao mucho, pero me toco aprender por las malas porque no pude entregar esa asignación a tiempo por el problema que me dio... bueno igual gracias por todo. Cool
Volver arriba
gaperga



Registrado: 19 Feb 2008
Mensajes: 12
Ubicación: CR

MensajePublicado: 22/02/2008 11:18 pm
Título: Mas que respuesta pregunta

estaba leyendo [img] cundo se desea hacer una conversion de un tipo char a un int se utiliza la funcion atoi
ejem

int resultado, num1,num2;

num1=atoi("5");
num2=atoi("5");
resultado = num1+num2+5;

lo que me dara de resultado es 15 cierto por que me convierte esos char a numeros, la pregunta es : he tratado de usar esto con una variable ,pero segun como loveo solo me srve con onstantes
COMO LO PODRIA USAR CO UNA VARIABLE QUE A CADA MOMENTO QUE SE EJECUTE CAMBIE DE VALOR?????

GRACIAS DE ANTEMAO
Volver arriba
Yahoo Messenger
rir3760



Registrado: 01 Oct 2004
Mensajes: 4379
Ubicación: Mexico

MensajePublicado: 22/02/2008 11:54 pm
Título:

Basta con recalcular el valor mediante la funcion, tampoco deberias tener problemas utilizando variables, por ejemplo:
Código:
char cadena[123];
int numero;

/* ... */

strcpy(cadena, "123");
numero = atoi(cadena); /* numero == 123 */

/* ... */

strcpy(cadena, "456");
numero = atoi(cadena); /* numero == 456 */

/* ... etc ... */


Pero es mejor utilizar la funcion strtol ya que tanto atoi como atol devuelven el valor cero en caso de error, para explicarlo mejor si la cadena es "0" o "qqqqqqq" el resultado es el mismo (cero) lo que no permite la verificacion de errores.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com