#include<fstream>
#include<iostream>
using namespace std;
int main(int argc,char *argv[])
{
if(argc!=3){
cout<<"Usage:CopyFile <from> <to>"<<endl;
return 0;
}
ifstream fin(argv[1]);
if(fin==0){
cout<<"Error: Input file cannot be opened for reading!"<<endl;
return 10;
}
ofstream fout(argv[2]);
if(fout==0){
cout<<"Error: Output file cannot be opened for writing!"<<endl;
return 10;
}
fin.seekg(0,ios::end);
size_t finsize=fin.tellg();
cout<<"Input file size: "<<finsize<<endl;
fin.seekg(0,ios::beg); // ios::beg -> from the start of the file
int c;
int percent=0;
while(fin.eof()==false)
{
c=fin.get();
if(fin.eof()==false)
fout.put(c);
cout<<"Copy completed : "<<100*percent/finsize<<"\r";
percent++;
}
fin.close();
fout.close();
}
Δοκιμάστε να αλλάξετε τον παραπάνω κώδικα, ώστε η συνάρτηση get() να μην διαβάζει ένα
χαρακτήρα την φορά αλλά ένα μπλόκ χαρακτήρων (π.χ. 512 bytes/χαρακτήρες). Χρησιμοποιήστε την
συνάρτηση ifstream::read(buf, bufsize) όπου buf είναι ένας πίνακας τύπου char, και το bufsize το
πλήθος των χαρακτήρων που θα διαβαστούν με την μια.
αυτο το ερωτημα πως θα το κανω;
