• Lunes 29 de Abril de 2024, 03:50

Autor Tema:  String  (Leído 1653 veces)

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
String
« en: Martes 21 de Noviembre de 2006, 23:08 »
0
Viendo q mi duda se fue mucho de lo q era el titulo de mi otra discusion aca lo pongo en un tema nuevo:

estoy frente a un pequeño problema, tengo un conjunto de numeros guardados en un string, ej: 012013001231 y quisiera saber como puedo hacer para leerlo uno por uno...

por ejemplo si el primero es un 0 hacer algo, si es un 1 otra cosa, etc, y despues pasar al segundo y asi sucesivamente...

Desde ya muchas gracias

Saludos

Adrian
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: String
« Respuesta #1 en: Martes 21 de Noviembre de 2006, 23:41 »
0
Hay varias formas, entre ellas:

Código: Text
  1. char* cadena='0123456789';
  2. char* p;
  3.  
  4. for(p=cadena; p;p++)
  5. {
  6.   if( &p=='0')
  7.   {
  8.      ...
  9.      ...
  10.    }
  11.    else if( &p=='1')
  12.    {
  13.      ...
  14.      ...
  15.    }
  16. }
  17.  
  18.  


Código: Text
  1.  
  2. char* p='0123456789';
  3.  
  4. while(p)
  5. {
  6.   if( &p=='0')
  7.   {
  8.      ...
  9.      ...
  10.    }
  11.    else if( &p=='1')
  12.    {
  13.      ...
  14.      ...
  15.    }
  16.   p++;
  17. }
  18.  

Código: Text
  1.  
  2. char* p='0123456789';
  3.  
  4. do
  5. {
  6.   if( &p=='0')
  7.   {
  8.      ...
  9.      ...
  10.    }
  11.    else if( &p=='1')
  12.    {
  13.      ...
  14.      ...
  15.    }
  16. }while(++p);
  17.  


podrias hacer cosas con substr y otras funciones pero no serian tan eficientes.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: String
« Respuesta #2 en: Miércoles 22 de Noviembre de 2006, 01:03 »
0
Gracias por la respuesta, el problema es q yo a la cadena la tengo en un AnsiString llamado Contenido, y cuando quiero hacer lo siguiente:

Código: Text
  1.  char* p;
  2.  p = &Contenido;
  3.  

me dice:

[C++ Error] Programador2.cpp(3930): E2034 Cannot convert 'AnsiString *' to 'char *'
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

Max_D

  • Miembro MUY activo
  • ***
  • Mensajes: 117
    • Ver Perfil
    • http://sitioteca.spaces.live.com/
Re: String
« Respuesta #3 en: Miércoles 22 de Noviembre de 2006, 01:28 »
0
Usa la funcion c_str()  que esta en el string.  B)

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: String
« Respuesta #4 en: Miércoles 22 de Noviembre de 2006, 02:44 »
0
Me podrias explicar un poquito mas q es esa funcion o q hace? es q tengo el builder instalado sin ayuda asi q no puedo verlo...

Gracias
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: String
« Respuesta #5 en: Miércoles 22 de Noviembre de 2006, 03:41 »
0
OK
investigando un poco creo q llegue a comprender el uso e hice esto
Código: Text
  1.  char aux[15]="";
  2.  strncpy(aux,Archivo->Strings[0].c_str(),14);
  3.  Label21->Caption= aux;
  4.  
  5.  for( int i = 0; i <= 39; i++ )
  6.  {
  7.    strncpy(aux,Archivo->Strings[i].c_str(),14);
  8.    for( int j = 0; j <= 13; j++ )
  9.    {
  10.     if (aux[j] == '0')
  11.       Punt[i+1][j+1]->Brush->Color==clWhite;
  12.     else if (aux[j] == '1')
  13.       Punt[i+1][j+1]->Brush->Color==clRed;
  14.     else if (aux[j] == '2')
  15.       Punt[i+1][j+1]->Brush->Color==clLime;
  16.     else if (aux[j] == '3')
  17.       Punt[i+1][j+1]->Brush->Color==clYellow;
  18.    }
  19.   }
  20.  

Me guarda bien la cadena en aux, eso lo veo cuando la muestro en el label21, pero no me realiza ninguna de las acciones de los if, o sea, nunca se dan como correcto, el punto seguro esta en la comparacion, pero no se me ocurre porq...
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

Devilcpc

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: String
« Respuesta #6 en: Miércoles 22 de Noviembre de 2006, 03:51 »
0
Disculpen mi idiotez, problema solucionado, se me escaparon dos "=" por copiarlo  :D  de otro lado, era asi:

Punt[i+1][j+1]->Brush->Color==clYellow;

y funciona perfecto...

asi q MUCHAS GRACIAS a todos los q me ayudaron  :hola:
-- Solo se q no se nada, pero aun supero a la generalidad de todos los hombres q no saben eso tampoco --

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: String
« Respuesta #7 en: Miércoles 22 de Noviembre de 2006, 14:16 »
0
ahora que lo reviso, en el ejemplo que puse arriba no era con & sino con * :losiento:   :think:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io