You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
#include <iostream>
|
|
#include <fstream>
|
|
#include <string>
|
|
|
|
class Money
|
|
{
|
|
private:
|
|
int yuan, jiao, fen;
|
|
|
|
public:
|
|
Money(int _yuan = 0, int _jiao = 0, int _fen = 0)
|
|
: yuan{_yuan}, jiao{_jiao}, fen{_fen}
|
|
{
|
|
}
|
|
friend std::ostream &operator<<(std::ostream &os, const Money &m)
|
|
{
|
|
if (&os == &std::cout)
|
|
return os << m.yuan << "元" << m.jiao << "角" << m.fen << "分\n";
|
|
else
|
|
return os << m.yuan << ' ' << m.jiao << ' ' << m.fen << '\n';
|
|
}
|
|
void save_to_binary(const char *filename)
|
|
{
|
|
std::ofstream ofile(filename, std::ios::binary);
|
|
ofile.write(reinterpret_cast<char *>(&yuan), sizeof(yuan));
|
|
ofile.write(reinterpret_cast<char *>(&jiao), sizeof(jiao));
|
|
ofile.write(reinterpret_cast<char *>(&fen), sizeof(fen));
|
|
ofile.close();
|
|
}
|
|
void read_from_binary(const char *filename)
|
|
{
|
|
std::ifstream ifile(filename, std::ios::binary);
|
|
ifile.read(reinterpret_cast<char *>(&yuan), sizeof(yuan));
|
|
ifile.read(reinterpret_cast<char *>(&jiao), sizeof(jiao));
|
|
ifile.read(reinterpret_cast<char *>(&fen), sizeof(fen));
|
|
ifile.close();
|
|
}
|
|
};
|
|
|
|
int main()
|
|
{
|
|
Money m{1, 2, 3}, n{};
|
|
m.save_to_binary("money.dat");
|
|
n.read_from_binary("money.dat");
|
|
std::cout << n;
|
|
return 0;
|
|
} |