Acceso directo a un caracter perteneciente a una cadena

Started by Fede, March 16, 2010, 12:34:16 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Fede

Hola a todos. Soy nuevo por estos lares, aunque os visitaba hasta ahora como lector.

Vengo rebotado de los foros de GP32Spain, donde estoy haciendo mis pinitos con Bennu y una aplicación sencilla para Wiz, y estoy intentando hacer una cosa que no se si se puede.

Formando parte de un visualizador sencillo de texto plano, estoy intentado acceder a un caracter de una string directamente, ya que con las funciones de bennu, la rutina me va muy lenta en la wiz.

Esto es:

string prueba="pelaez"; //Esta sería la variable inicializada.

say(prueba[2]); //Con esto me da directamente la "l" de "pelaez";


Sin embargo si intento prueba[2]="x"; me da un error en compilación de que no es una variable.

Parece como si prueba[2] la pudiese leer, pero no escribir.

También he intentado acceder a los caracteres via punteros pero no hay manera. (O tampoco se puede, o no lo consigo).

Quisiera saber si lo que intento hacer es posible, o no.

Gracias y saludos.


P.D.

Adjunto enlace a la mini discusión de GP32Spain por si vale para aclarar algo.

http://www.gp32spain.com/foros/showthread.php?t=72134
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Windgate

No he probado lo que dices, pero entiendo el problema, intento ayudarte mientras alguien más experto nos cuenta algo:

Si un caracter es accesible aunque sólo sea en lectura, podrias "reconstruir" la cadena de texto cambiando sólamente ese caracter y volver a asignarla a la string.

Si no hay una solución mejor puedes hacer una FUNCTION que se ocupe de ello:

FUNCTION string replace_char ( string original , char change , int position )

Pero vamos, espera a ver si alguien nos ofrece una alternativa más sencilla, y bienvenido a este lugar dejado de la mano del altísimo.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

darío

Creo que no se puede hacer eso con strings. Yo lo que hacía (antiguamente) era usar la función substr y reconstruir la cadena.

string mistring="chismorreo";
mistring = substr(mistring,0,4)+"p"+substr(mistring,5);

Otra cosa es si estás usando cadenas de caracteres "char" en cuyo caso sí se puede usar:
char micadena[]="chismorreo";
micadena[4]='p';

No lo he probado, pero creo que debería funcionar.
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats


DCelso

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

FreeYourMind


SplinterGU

debido al tipo de datos que es una string, esto solo es una facilidad para la lectura... si queres modificar usando el metodo de array, quizas te convenga usar char[] en vez de string.

saludos
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Fede

Muchas gracias a todos, da gusto que te reciban de esta manera.

Splintergu, supongo que seras el mismo de gp32, saludos especiales, veo que estas en todas partes.

Gracias de nuevo, y hare el último intento con arrays de chars a ver como responde en velocidad la wiz.
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

FreeYourMind

Yo soy GameMaster de Gp32 por si no lo sabias, tu nick cual es ?

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Rein (K´)ah Al-Ghul


Rein (K´)ah Al-Ghul
Infected with the Krieger strain of the Human-MetaHuman Vampiric Virus.

en vez de darme Karma positivo, denme (K´)arma negativ

Fede

Quote from: FreeYourMind on March 16, 2010, 10:11:15 PM
Yo soy GameMaster de Gp32 por si no lo sabias, tu nick cual es ?

Perdona, pero no reconocí tu logo, pero el de splintergu si. Mi nick es el mismo.

Lo que pasa es que no soy, ni puedo ser, un miembro muy activo, ya sabes: trabajo, casa, mujer, niño (y otro en camino).

Me topé con la wiz por casualidad, con sus foros, por lo mismo y con bennu idem. Es todo una cadena de coincidencias, pero predestinadas unas con otras, y me encantó su espíritu.

Fui programador freelance de clipper en su época y al ver el mundillo este, me volvió el gusanillo, el cual tube que abandonar al terminar mi etapa de juventud y 'sentar la cabeza'.

Sinceramente, esto ha mejorado, pero para mejor-mejor.

Lo malo es que ahora, mientras deayuno, voy a tener que mirar 2 foros.  ;)

Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.