При чтении в двоичном файле в виде буфера char *, он продолжает читать его как двоичный, а не как символы - PullRequest
0 голосов
/ 06 марта 2020
void reader(string fileName){
     ifstream ifile; 
     ifile.open(fileName, ios::binary | ios::in);
     ifile.seekg (0, ifile.end);
     int length = ifile.tellg();
     ifile.seekg (0, ifile.beg);
     char * buffer = new char [length];
while(ifile.good()){

    // read data as a block:
    ifile.read (buffer,4);
    cout << buffer <<endl;
    //ifile.read((char *)&inputName, sizeof(int));
    //cout << inputName;

}
ifile.close();

Вывод, который он выдает, выглядит следующим образом:

▒d▒▒root.d[$Apd▒▒
endXroot.d

, когда я ожидаю, что он будет выглядеть как

root.d
endXroot.d

данные были введены в файл как root .d / 0endX root .d idk, если это помогает или нет.

1 Ответ

0 голосов
/ 06 марта 2020
ifstream ifile; 
    ifile.open(fileName, ios::binary | ios::in |ios::ate);
    if(ifile.good()){
        char * buffer;
        long size;
        ifstream file (fileName, ios::in|ios::binary|ios::ate);
        size = file.tellg();
        file.seekg (0, ios::beg);
        buffer = new char [size];
        file.read (buffer, size);
    }
 }

Я исправил это, заставив его получить размер и затем читая непосредственно к нему. Я также исправил основные проблемы, связанные с записью двоичного файла.

...