diff --git a/money_binary.cpp b/money_binary.cpp new file mode 100644 index 0000000..43a65ee --- /dev/null +++ b/money_binary.cpp @@ -0,0 +1,47 @@ +#include +#include +#include + +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(&yuan), sizeof(yuan)); + ofile.write(reinterpret_cast(&jiao), sizeof(jiao)); + ofile.write(reinterpret_cast(&fen), sizeof(fen)); + ofile.close(); + } + void read_from_binary(const char *filename) + { + std::ifstream ifile(filename, std::ios::binary); + ifile.read(reinterpret_cast(&yuan), sizeof(yuan)); + ifile.read(reinterpret_cast(&jiao), sizeof(jiao)); + ifile.read(reinterpret_cast(&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; +} \ No newline at end of file