Foro de elhacker.net

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
  1. #include <iostream>
  2. //#include <cstring>
  3. #include <string>
  4. #include <stdio.h>
  5.  
  6. using namespace std;
  7.  
  8. void FixFileName(string Folder, string sample){
  9. size_t found;
  10.   string aaa, bbb, ccc;
  11.  
  12.   string FolderName =  Folder;
  13. string FullFileName = sample;
  14.  
  15. found = FullFileName.find_last_of(".");
  16.   aaa = FullFileName.substr(found, FullFileName.length());
  17.   bbb = FullFileName.substr (0,FolderName.length()+7); // 7 is the S: Season + <numb> E: Episode + <Numb>
  18.   ccc = bbb + aaa;
  19. cout << ccc << endl;
  20. //rename(sample, ccc);
  21.  
  22. }
  23.  
  24. int main (){
  25.  FixFileName("The walking dead", "The.walking.dead.s01e01.720p.HDTV.X264-DIMENSION.mkv");
  26.  FixFileName("Game of thrones", "Game.of.thrones.s02e01.720p.HDTV.X264-DIMENSION.mkv");
  27.  return 0;
  28. }


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....
Código
  1. string cadena1 = sample;
  2. char * cadena2 = (char *) cadena1;
  3.  

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
  1. ccc.append(bbb);
  2. ccc.append(aaa);
  3. //cout << ccc << endl;
  4. rename(sample, (char *)ccc); // <-- | 23:26 justo donde esta ccc
  5.  

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 (Astaroth) 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'