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:
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 "-"
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!
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...
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!¡.
SOLUCIONADO
Pude encontrar algo y modificarlo:
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];
}