2

私の関数はcopy2です。cplusplus.comで関数copy1を見つけました。copy2を使用していて問題がありますが、copy1は問題ありません。copy2は、テスト用のファイルmp3のatist、titleなどに関する情報を失います。なぜわからないのですか?

 #include <fstream>
 #include <iostream>
using namespace std;

void copy1()
{
    char * buffer;
    long size;

    ifstream infile ("Test.mp3",ifstream::binary);
    ofstream outfile ("Test2.mp3",ofstream::binary);

    // get size of file
    infile.seekg(0,ifstream::end);
    size=infile.tellg();
    infile.seekg(0);

    // allocate memory for file content
    buffer = new char [size];

    // read content of infile
    infile.read (buffer,size);

    // write to outfile
    outfile.write (buffer,size);

    // release dynamically-allocated memory
    delete[] buffer;
    cout<<"xong";
    outfile.close();
    infile.close();
    return ;
}
void copy2(){
    ifstream infile ("Test.mp3",ios::binary);
    ofstream outfile ("Test1.mp3",ios::binary);
    char c;
    while(!infile.eof())
    {
    infile.get(c);
    outfile.put(c);
    }
}
int main () {
    copy2();
}
4

1 に答える 1

0

while(!infile.eof())特定の条件下で誤った結果が返される可能性があるため、問題が発生する可能性があります。私も同様の問題を抱えています。次のようなものを使用してみてください。

while (getline(infile,data))                                           
     {                                        
          cout<<data<<endl;
     }
于 2012-12-27T16:38:46.587 に答える