hola gente, estoy tratando de hacer un pequeño programito search & rename, la parte de search ya la tengo echa, ahora me surguio un problema a la hora de renombrar los archivos. para renombrar los archivos, me guié por lo que encontre en cplusplus.com: String class (http://www.cplusplus.com/reference/string/string/), una vez ya pseudo parseado el string del nombre del archivo y arreglado como seria final, no se como hacer la conversion de <string> a <char *> que es el type que requiere rename de stdio.h
#include <iostream>
//#include <cstring>
#include <string>
#include <stdio.h>
using namespace std;
void FixFileName(string Folder, string sample){
size_t found;
string aaa, bbb, ccc;
string FolderName = Folder;
string FullFileName = sample;
found = FullFileName.find_last_of(".");
aaa = FullFileName.substr(found, FullFileName.length());
bbb = FullFileName.substr (0,FolderName.length()+7); // 7 is the S: Season + <numb> E: Episode + <Numb>
ccc = bbb + aaa;
cout << ccc << endl;
//rename(sample, ccc);
}
int main (){
FixFileName("The walking dead", "The.walking.dead.s01e01.720p.HDTV.X264-DIMENSION.mkv");
FixFileName("Game of thrones", "Game.of.thrones.s02e01.720p.HDTV.X264-DIMENSION.mkv");
return 0;
}
¡Buenas xkiz!
Prueba con lo siguiente....
string cadena1 = sample;
char * cadena2 = (char *) cadena1;
Para hacer una conversion de tipos en C/C++ solo tienes que poner el tipo al que lo quieres convertir entre parentesis y precedido de la variable a convertir.
Un saludo.
si hago el (char *) ccc
Citar
g++ main.cpp -o testing
main.cpp: En la función 'void FixFileName(std::string, std::string)':
main.cpp:23:26: error: conversión inválida del tipo 'std::string {aka std::basic_string<char>}'
make: *** [exec] Error 1
ccc.append(bbb);
ccc.append(aaa);
//cout << ccc << endl;
rename(sample, (char *)ccc); // <-- | 23:26 justo donde esta ccc
lo k no logro entender es que si sample y ccc son del mismo tipo de variable, por que no salta en sample y si en ccc, osea si fuese error de tipo tendria que saltar en sample primero.
.
Quieres la cadena ansi de la clase string?... usa c_str()
http://www.cplusplus.com/reference/string/string/c_str/
Dulces Lunas!¡.
ahi lo solusione...
Gracia'