PDA

View Full Version : Passare 2 puntatori a un vettore a una funzione


Mattyfog
12-08-2008, 14:50
Sto scrivendo un programma che copia una directory, solo che ho un problema con questa funzione:

void copyallfile()
{
vector<string>::iterator a = listaofile.begin();
vector<string>::iterator b = listadfile.begin();
while(a != listaofile.end())
{
char tfile[999999];
copyfile(*a, *b);
a++; b++;
}

}

i 2 vettori contengono le origini e le destinazioni dei file da copiare. Solo che mi trovo a dover passare *a e *b alla funzione copy file che ho appena creato e che non me le accetta.
Riassumendo come posso passare i puntatori *a e *b alla mia funzione???
L'errore che dev-c++ mi da è:
103 E:\Documents and Settings\Matteo\Documenti\C++\nonno\copydir.h cannot convert `std::basic_string<char, std::char_traits<char>, std::allocator<char> >' to `char*' for argument `1' to `void copyfile(char*, char*)'
che faccio???
ps: ecco la mia funzione copyfile:

void copyfile(char *origine, char *destinazione)
{
char sfile;
//int pos = 0;


ifstream in(origine, ios::in | ios::binary);
if(!in)
{
cout<<"Impossibile aprire il file di origine!!!";
}
ofstream out(destinazione, ios::out | ios::binary);
if(!out)
{
cout<<"Impossibile aprire il file di destinazione!!!";
}

while(!in.eof())
{
//in.seekg(pos);
in.get(sfile);
//out.seekp(ios::end);
out.put(sfile);
//pos++;
}

in.close();
out.close();


}

ciao ciao

sottovento
12-08-2008, 15:30
I vettori contengono delle std::string, la funzione copyfile accetta dei puntatori a carattere.

Potresti cambiare la copyfile in
void copyfile(const char *origine, const char *destinazione)


e chiamarla con
copyfile((*a).c_str(), (*b).c_str());

Esistono soluzioni migliori, ma penso che questa implichi il minor numero di modifiche possibile

Mattyfog
12-08-2008, 17:12
ciao,

ho fatto esattamente come mi hai detto,
eppure mi da ancora questi errori sulla riga:

copyfile((*a).c_str(), (*b).c_str());

103 E:\Documents and Settings\Matteo\Documenti\C++\nonno\copydir.h invalid conversion from `const char*' to `char*'

103 E:\Documents and Settings\Matteo\Documenti\C++\nonno\copydir.h initializing argument 1 of `void copyfile(char*, char*)'

103 E:\Documents and Settings\Matteo\Documenti\C++\nonno\copydir.h invalid conversion from `const char*' to `char*'

103 E:\Documents and Settings\Matteo\Documenti\C++\nonno\copydir.h initializing argument 2 of `void copyfile(char*, char*)'

eppure ti giuro che ho scritto come mi hai detto.
ciao ciao

cionci
13-08-2008, 13:41
http://www.hwupgrade.it/forum/showthread.php?t=1649196
Thread chiuso