Hola: alguien me podria explicar cual es la diferencia entre este codigo ???
string get_filename(string url) {
vector<string> resultado;
if (url.find("?") != string::npos) {
stringexplode(url, "?", &resultado);
stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
return resultado.at(resultado.size()-1);
} else {
stringexplode(url, "/", &resultado);
return resultado.at(resultado.size()-1);
}
}
y este otro ???
string get_filename(string url) {
vector<string> resultado;
if (url.find("?") != string::npos) {
stringexplode(url, "?", &resultado);
stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
return resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1);
} else {
stringexplode(url, "/", &resultado);
return resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1); ;
}
}
o dicho de otra manera, por que en algunos casos se usa el primer codigo en la estructura if...else y en otros el segundo, e incluso, he llegado a ver que a veces ese loop se repite hasta un numero de 6, ???
string get_filename(string url) {
vector<string> resultado;
if (url.find("?") != string::npos) {
stringexplode(url, "?", &resultado);
stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
return resultado.at(resultado.size()-6) + "_" + resultado.at(resultado.size()-5) + "_" + resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1);
} else {
stringexplode(url, "/", &resultado);
return resultado.at(resultado.size()-6) + "_" + resultado.at(resultado.size()-5) + "_" + resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1); ;
}
}
ya que me gustaria aprender en que casos se debe usar uno u otro.
Gracias
Cita de: oogie.boogie en Enero 17, 2014, 11:13:46 AM
Hola: alguien me podria explicar cual es la diferencia entre este codigo ???
string get_filename(string url) {
vector<string> resultado;
if (url.find("?") != string::npos) {
stringexplode(url, "?", &resultado);
stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
return resultado.at(resultado.size()-1);
} else {
stringexplode(url, "/", &resultado);
return resultado.at(resultado.size()-1);
}
}
y este otro ???
string get_filename(string url) {
vector<string> resultado;
if (url.find("?") != string::npos) {
stringexplode(url, "?", &resultado);
stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
return resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1);
} else {
stringexplode(url, "/", &resultado);
return resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1); ;
}
}
o dicho de otra manera, por que en algunos casos se usa el primer codigo en la estructura if...else y en otros el segundo, e incluso, he llegado a ver que a veces ese loop se repite hasta un numero de 6, ???
string get_filename(string url) {
vector<string> resultado;
if (url.find("?") != string::npos) {
stringexplode(url, "?", &resultado);
stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
return resultado.at(resultado.size()-6) + "_" + resultado.at(resultado.size()-5) + "_" + resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1);
} else {
stringexplode(url, "/", &resultado);
return resultado.at(resultado.size()-6) + "_" + resultado.at(resultado.size()-5) + "_" + resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1); ;
}
}
ya que me gustaria aprender en que casos se debe usar uno u otro.
Gracias
esta muy buena tu pregunta esteremos atento a las respuestas de los moderadores ya que yo también tengo esa inquietud
Bueno, para responder esta pregunta lo voy a hacerlo con un ejemplo.
Para este ejemplo utilizare la siguiente url
http://espndeportes-assets.espn.go.com/2003/photos2014/0119/collage134.jpg
1.- Si en el codigo se usa
stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
return resultado.at(resultado.size()-1);
Lo que hará el codigo será buscar desde el final de la línea la cadena "/" y despues de ese valor será el resultado que se grabara en la base de datos, en este caso el resultado sería "collage134.jpg"
2.- Si en el codigo se usa
stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
return resultado.at(resultado.size()-2) + "_" + resultado.at(resultado.size()-1);
Lo que hará el codigo será buscar desde el final de la línea la cadena "/" y el resultado será lo que sigue despues del segundo "/", entonces el resultado que se grabara en la base de datos sera "0119_collage134.jpg"; tambien se puede ver que el "/" que va al medio ha sido remplazado por el "_", si uno observa en la misma linea del codigo puede ver este reemplazo.
Así este proceso se puede hacer sucesivamente, y porque se hace esto? ya que hay ocasiones en que las URLs de algunos contenidos en la parte final son iguales, pero los contenidos son diferentes; uno revisando las urls puede ver en que parte se diferencian y de acuerdo esto emplear el codigo respectivo, ya que si no se hace esto al momento de hacer HIT nos provocará un error o nos mostrara una imagen u otro contenido que no corresponde.
Saludos.
Gracias Luistec, mas claro ni el agua, Saludos
Muchas gracias por aclararme algo que tenia agarrado con alfileres, ahora esta todo mucho mas claro. :-*
Un cordial saludo !! :)
PD: amigo firecold, la consulta ya esta contestada por el amigo luistec, cuando te conteste por el foro de thunder, aun no habia leido este mensaje, gracias de todos modos y hasta la proxima.