Nhập/Xuất theo đơn đặt hàng và các File

Một phần của tài liệu Nhập xuất C++ nâng cao (Trang 32 - 35)

Trong C++ do tất cả các stream đều được xử lý như nhau, nên một bộ chèn dùng để xuất thông tin ra màn hình có thể dùng để xuất thông tin ra file mà không cần phải thay đổi gì cả.

Đây là một trong những đặc trưng quan trọng và hữu hiệu của cách tiếp cận

nhập/xuất C++.

Các bộ chèn và bộ chiết đã được quá tải, cũng như các bộ thao tác nhập/xuất, có thể

dùng cho bất kỳ một stream nào miễn là các bộ này được viết một cách tổng quát. Do đó cần phải tổng quát hoá các bộ chèn và bộ chiết hay các bộ thao tác nhập/xuất

bất cứ khi nào có thể làm được.

Ví dụ 6.1 Quá tải các toán tử << và toán tử >> trong lớp coord,

có thể dùng chúng để xuất thông tin ra màn hình cũng như ra file.

#include <iostream.h> #include <fstream.h> class coord { int x, y; public: coord(int i, int j) { x = i; y = j; }

friend ostream &operator << (ostream &stream, coord ob); friend istream &operator >> (istream &stream, coord &ob);

};

ostream &operator<<(ostream &stream, coord ob) {

stream << ob.x << ' ' << ob.y << '\n'; return stream;

}

istream &operator>>(istream &stream, coord &ob) {

stream >> ob.x >> ob.y; return stream;

}

int main() {

coord o1(1, 2), o2(3, 4);

ofstream out("test.txt");

if(!out) {

cout << "Cannot open output file.\n"; return 1;

}

out << o1 << o2; // write to test.txt with the contents : 1 2 3 4 out.close();

ifstream in("test.txt");

if(!in) {

cout << "Cannot open input file.\n"; return 1; }

coord o3(0, 0), o4(0, 0);

in >> o3 >> o4; // write to objects o3, o4 with the contents : 1 2 3 4

cout << o3 << o4; // output to monitors : 1 2 3 4

in.close(); (adsbygoogle = window.adsbygoogle || []).push({});

return 0; }

Ví dụ 6.2 Các bộ thao tác nhập/xuất có thể dùng để xuất thông tin ra màn hình

cũng như ra file.

#include <fstream.h> #include <iomanip.h> // Attention:

ostream &atn(ostream &stream)

{

stream << "Attention: "; return stream;

}

// Please note:

ostream &note(ostream &stream)

{

stream << "Please Note: "; return stream; } int main() { ofstream out("test.txt"); if(!out) {

cout << "Cannot open output file.\n"; return 1;

}

// write to screen

cout << atn << "High voltage circuit\n"; cout << note << "Turn off all lights\n";

// write to file

out << atn << "High voltage circuit\n"; out << note << "Turn off all lights\n";

out.close(); return 0; }

Bài tập VII

1. Với mỗi chương trình trong chương 8, hãy thực hiện các điều chỉnh các bộ chèn, bộ chiết và các bộ thao tác nhập/xuất để chúng có thể làm việc được với các file .

Một phần của tài liệu Nhập xuất C++ nâng cao (Trang 32 - 35)