Test Foro de elhacker.net SMF 2.1

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 (vb) [Seleccionar]

var = Split("Texto /- de /- prueba /--", "/-")


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 (csharp) [Seleccionar]

int i = 0;
String^ sMsg = L" Hola Mundo Infra ";
array<String^>^ sDelimiter = {L" "}; // Solo separamos "sMsg" por espacios...
array<String^>^ sWords;
sWords = sMsg->Split(sDelimiter, StringSplitOptions::None);
for (i = 0; i < sWords->Length; ++i)
Windows::Forms::MessageBox::Show(sWords[i]);


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 (cpp) [Seleccionar]

string M_Split2(const string& s, const string& c, int index)
{
string::size_type i = 0;
string::size_type j = s.find(c);

if (j == 4294967295)
{
return "<ERROR>";
}

vector<string> v;

while (j != string::npos)
{
v.push_back(s.substr(i, j-i));

i = ++j + c.length() - 1; //Sumamos el length de lo que hay que buscar, y le restamos 1
j = s.find(c, j);
if (j == string::npos)
{
v.push_back(s.substr(i, s.length( )));
}
}

return v[index];
}