Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: xkiz ™ en 6 Abril 2012, 12:32 PM

Título: Ayuda con conversión de tipo de variable [c++]
Publicado por: xkiz ™ en 6 Abril 2012, 12:32 PM
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

Código (cpp) [Seleccionar]
#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;
}
Título: Re: Ayuda con conversión de tipo de variable [c++]
Publicado por: soyloqbuskas en 6 Abril 2012, 14:34 PM
¡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.
Título: Re: Ayuda con conversión de tipo de variable [c++]
Publicado por: xkiz ™ en 6 Abril 2012, 16:10 PM
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

Código (cpp) [Seleccionar]

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.
Título: Re: Ayuda con conversión de tipo de variable [c++]
Publicado por: BlackZeroX en 6 Abril 2012, 20:45 PM
.
Quieres la cadena ansi de la clase string?... usa c_str()

http://www.cplusplus.com/reference/string/string/c_str/

Dulces Lunas!¡.
Título: Re: Ayuda con conversión de tipo de variable [c++]
Publicado por: xkiz ™ en 6 Abril 2012, 23:28 PM
ahi lo solusione...
Gracia'