Файловый объект не может прочитать строку из двоичного файла в C ++ - PullRequest
0 голосов
/ 16 февраля 2020

Я создал счет класса для выполнения таких операций, как добавление, просмотр и поиск записи из двоичного файла. В функции поиска я не могу получить строку в выводе. Я новичок в C ++ и использую Code :: Blocks.

#include<iostream>
#include<fstream>

using namespace std;

class bill{
    string name;
    unsigned long long int phone_no;
    unsigned int payment;
    unsigned short int dial_code;

    void input_data();
    inline void show_data();

public:

    bill(){
        name = "NULL";
        payment = 0;
        phone_no = 0;
        dial_code = 91;
    }
    void add();
    void view();
    void Search();
};

inline void bill::show_data(){
    cout<<"\nName: "<<name<<"\nPhone Number: +"<<dial_code<<" "<<phone_no<<"\nPayment: "<<payment<<endl;
}

void bill::Search(){
    unsigned long long int phone;
    cout<<"Enter Phone Number: ";
    cin>>phone;
    fstream f;
    bill temp;

    f.open("data.txt", ios::binary | ios::in);
    while(f.read( (char*)&temp, sizeof(temp) ) )
           if( phone == temp.phone_no )
           temp.show_data();
    f.close();
}

int main(){
    bill b;
    b.Search();
    return 0;
}

Ожидаемый вывод:

Enter Phone No.: 123456789
Name: Henry Johnson
Phone No.: 123456789
Payment: 4078

Реальный Выход:

Enter Phone No.: 123456789
Name: hnsn Ywg/jl?
Phone No.: 123456789
Payment: 4078
...