| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
pandemolde
Registrado: 28 Jul 2005 Mensajes: 15
| Publicado: 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
| Publicado: 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
| Publicado: 26/08/2005 8:21 am | | | Título: |
| Solo para estar seguros, estas realizando el casting de esta forma:
¿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
| Publicado: 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
| Publicado: 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
| Publicado: 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  |
|
| Volver arriba | |
 |
|
rir3760

Registrado: 01 Oct 2004 Mensajes: 4379 Ubicación: Mexico
| Publicado: 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
| Publicado: 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 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.  |
|
| Volver arriba | |
 |
gaperga
Registrado: 19 Feb 2008 Mensajes: 12 Ubicación: CR
| Publicado: 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 | |
 |
|
rir3760

Registrado: 01 Oct 2004 Mensajes: 4379 Ubicación: Mexico
| Publicado: 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 | |
 |
|
|