Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Miseryk en 23 Enero 2012, 04:35 am



Título: [SOLUCIONADO] VB Split
Publicado por: Miseryk en 23 Enero 2012, 04:35 am
 Hola, estaba buscando informacion de como lograr el split de vb6 en c++, he encontrado varios codigos e inclusive he hecho 1, pero funciona con char y cuando lo intento hacer con string (el delimitador) me retorna cualquier cosa.
Lo que quiero lograr es:

Código
  1. var = Split("Texto /- de /- prueba /--", "/-")
  2.  

Lo cual retornaria dentro de la variable ( var(3) )
"Texto "
" de "
" prueba "
"-"

Cualquier ayuda o aporte seria de gran ayuda, mientras tanto sigo tratando de hacerlo o encontrar inforamcion al respecto, desde ya muchas gracias.

PD: Utilizo VS 2010.

Edit:

O simplemente:

NewSplit(cadena, delim, index)

var = Split("Texto /- de /- prueba /--", "/-", 3) //que sería "-"


Título: Re: [AYUDA] VB Split
Publicado por: bdoX en 23 Enero 2012, 05:59 am
Si sabes programar en c++ te darás cuenta de que no cambia mucho el asunto.

Enlace (http://www.fernando1989.com/Funcion-Split-en-C-16.html)

saludos!


Título: Re: [AYUDA] VB Split
Publicado por: BlackZeroX en 23 Enero 2012, 07:34 am
Si estas en .NET ve a la sección correspondiente...
Aun asi en .NET (VS 2010) por ejemplo en C++/CLI que es el que manejo en VS 2010...

Código
  1. int i = 0;
  2. String^ sMsg = L" Hola Mundo Infra ";
  3. array<String^>^ sDelimiter = {L" "}; // Solo separamos "sMsg" por espacios...
  4. array<String^>^ sWords;
  5. sWords = sMsg->Split(sDelimiter, StringSplitOptions::None);
  6. for (i = 0; i < sWords->Length; ++i)
  7. Windows::Forms::MessageBox::Show(sWords[i]);
  8.  

Lee esta liga: http://msdn.microsoft.com/en-us/library/st9zk29t.aspx

NOTA: Si quieres una funcion split para C/C++ avisame que tengo por hay una que me arme.

Dulces Lunas!¡.


Título: Re: [AYUDA] VB Split
Publicado por: Miseryk en 24 Enero 2012, 19:29 pm
SOLUCIONADO

Pude encontrar algo y modificarlo:

Código
  1. string M_Split2(const string& s, const string& c, int index)
  2. {
  3. string::size_type i = 0;
  4. string::size_type j = s.find(c);
  5.  
  6. if (j == 4294967295)
  7. {
  8. return "<ERROR>";
  9. }
  10.  
  11. vector<string> v;
  12.  
  13. while (j != string::npos)
  14. {
  15. v.push_back(s.substr(i, j-i));
  16.  
  17. i = ++j + c.length() - 1; //Sumamos el length de lo que hay que buscar, y le restamos 1
  18. j = s.find(c, j);
  19. if (j == string::npos)
  20. {
  21. v.push_back(s.substr(i, s.length( )));
  22. }
  23. }
  24.  
  25. return v[index];
  26. }
  27.