Ayuda con conversión de tipo de variable [c++]

Iniciado por xkiz ™, 6 Abril 2012, 12:32 PM

0 Miembros y 1 Visitante están viendo este tema.

xkiz ™

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, 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;
}

soyloqbuskas

¡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 tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw

xkiz ™

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.

BlackZeroX

The Dark Shadow is my passion.

xkiz ™