Ich habe eine Beispieldatei, die Inhalte aus einer Datei liest. Der Inhalt ist in einem unlesbaren Format wie unten gezeigt. Wenn ich die read() - Funktion verwende und die Variable cout, gibt es die gleichen binären Daten zurück, anstatt normalen Text anzuzeigen. Wie lese ich die Inhalte in einem für Menschen lesbaren Format?C++ lesen() gibt unformatierte Binärdaten zurück
Hier sind die Inhalte der Datei (auf den Schreib() -Funktion) lese ich gerade:
LÀ ³ L¹ R
Hier ist der Lesecode:
void readBinary(){
ifstream inputFile("flights.dat", ios::in | ios::binary);
char buffer[100];
inputFile.seekg(0, ios::beg);
if(inputFile.is_open()){
inputFile.read((char *)&buffer, sizeof(buffer));
for(int i = 0; i < sizeof(buffer); i++){
cout << buffer[i];
}
}
inputFile.close();
}
Hier ist die Code zum Schreiben der Daten:
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
void inputData();
struct airplaneDetails {
string airplaneCode;
int totalRows, seatsInRows, firstSeats, businessSeats, economySeats;
};
int main(){
inputData();
return 0;
}
void inputData(){
ofstream outputFile("flights.dat", ios::out | ios::binary | ios::app);
if(!outputFile.is_open()){
cout << "There was an error opening the file.";
} else {
airplaneDetails airplane;
cout << "Please provide the details below :" << "\n\n";
cout << "Enter the airplane code : ";
cin >> airplane.airplaneCode;
.
.
//Assigning values to the variables
.
.
//Put the pointer at the end
outputFile.seekp(0, ios::end);
//Write the input data to the binary file
outputFile.write((char *)&airplane.airplaneCode, sizeof(airplane.airplaneCode));
outputFile.write((char *)&airplane.totalRows, sizeof(airplane.totalRows));
outputFile.write((char *)&airplane.seatsInRows, sizeof(airplane.seatsInRows));
outputFile.write((char *)&airplane.firstSeats, sizeof(airplane.firstSeats));
outputFile.write((char *)&airplane.businessSeats, sizeof(airplane.businessSeats));
outputFile.write((char *)&airplane.economySeats, sizeof(airplane.economySeats));
//Close the file handler
outputFile.close();
}
}
Entschuldigung, aber ich bin mir nicht sicher, was Sie erwarten, hier zu sehen, könnten Sie etwas weiter erklären? – vu1p3n0x
Es überrascht mich, dass Sie überrascht sind, wenn Sie eine Datei lesen und die Daten, die Sie gerade gelesen haben, drucken, den Inhalt der Datei. – immibis
Verwenden Sie 'inputFile.gcount()', um genau zu bestimmen, wie viele Bytes aus der Datei gelesen wurden. – dreamlax