Título: Cortar Cadena [slice] Publicado por: bash en 29 Septiembre 2016, 23:28 pm Buenas A tod@s en el foro , tengo una duda media boba e interesante he estado viendo varias libreria para manejo de cadenas o mejor dicho un par porque necesito una funcion para cambiar el tamano de una cadena (claro eliminando caracteres ) lamentablemente no encontre ninguna que haga esto eficientemente o que requiera de alguna otra libreria y entonces por esa razon decidi crear una pequena libreria en parte me ha funcionadod correctamente , pero tengo un inconveniente creando una funcion que recorte un mi cadea desde algun punto especifico que pertenezca a ella misma obviamente, quizas se el manejo de memoria. la verdad tengo un par de dias en esto y ya no encuentro como hacer esta funcion , posteare el codigo para recibir su recomendacion para ver si me pueden hechar una mano o algun consejo.
Código
Título: Re: Cortar Cadena Publicado por: MAFUS en 30 Septiembre 2016, 16:12 pm No entendí que querías hacer.
Título: Re: Cortar Cadena Publicado por: ivancea96 en 30 Septiembre 2016, 18:53 pm lamentablemente no encontre ninguna que haga esto eficientemente Si estás en C++, la clase string tiene el método substr. Además, la librería algorithm de la librería estándar también, tiene funciones para manejar contenedores (string incluido). A parte: - Pusiste de retorno de la función ini. - (char *)calloc(inlen, sizeof(char ));: inlen es 0. Quizás quisieras decir this->inlen. - strncpy( szEnd, &this->szChars[end], inlen);: si lo que querías decir ahí era this->inlen, ten en cuenta que vas a copiar caracteres fuera del rango, y probablemente, de la memoria de tu cadena. Luego, yo cambiaría calloc y strncpy por malloc y memcpy, poniendo posteriormente el caracter nulo al final de las cadenas. Ya a tu gusto. Y bueno, estás reservando memoria 4 veces. Puedes hacer esta función reservando memoria solo 1 vez (o ninguna si reutilizas la memoria que ya había, dejando que sobre espacio). Además, coges memoria de un tamaño excesivo. La cadena tendrá 3 partes: Código: --- A ---|beg| --- B --- |end| --- C --- Título: Re: Cortar Cadena Publicado por: bash en 1 Octubre 2016, 14:32 pm primero que todo gracias por las respuestas !!!
@Mafus : lo que quiero hacer es lo siguiente , te muestro con un ejemplo Código
es decir elimine de la cadena los caracteres del 5 al 12 claro mi funcion esta dentro de una clase por eso uso this. @ivancea96 estoy usando c++ pero lo que estoy haciendo es creando una clase "String" ademas como explique arriba quiero eliminarlo del string actual no deseo devolverlo, de hecho la funcion es de tipo int(edite mal esa parte cuand postea ) , cierto debi verificar que inlen sea diferente de "0" pero como siempre la estuve probando con una longitud mayor de 0 no me di cuenta de eso. Código
dices algo asi ? como me recomiendas tomar espacio una sola vez ? gracias de nuevo por todo ;-) :laugh: EDIT: He mejorado el codigo , me gustaria saber su opinion acerca de este. Código
anteriormente le pasaba un arreglo gigante digas 20kb y la app terminaba con algun error en malloc pero ahora anda bien , pero me gustaria saber que opinan. Título: Re: Cortar Cadena Publicado por: ivancea96 en 2 Octubre 2016, 15:57 pm Lo dicho, solo deberías hacer 1 malloc.
Y bueno, ahora que me fijo, siendo C++, deberías poner new en vez de malloc. Código Y ahí, copias directamente lo que necesitas. Código
Todo unido: Código
Título: Re: Cortar Cadena Publicado por: bash en 2 Octubre 2016, 17:32 pm hey es cierto .... waaoooo donde se fue mi logica , :D , la verdad es asi que deberia de ser. gracias.
ahora bien me encuentro en la necesidad de mutar el "string" por ejemplo Código
En esta parte del codigo me tira un bad_alloc y a veces solo sale pero me imagino que es por lo mismo. Código
quizas mi codigo esta mal ,pero estoy haciendo esto para arm-11 en thumb mode. solo en caso de que le paresca extrano la pregunta. :D gracias de antemano. |