2015-02-05 11 views
6

Tôi đã đọc một số mã dự án và tôi thấy điều này, đây MembersOfLibrary() là một constructor của lớp MenberOfLibraryios :: trong | ios :: out là gì?

class MembersOfLibrary { 

    public: 
    MembersOfLibrary(); 
    ~MembersOfLibrary() {} 
    void addMember(); 
    void removeMember(); 
    unsigned int searchMember(unsigned int MembershipNo); 
    void searchMember(unsigned char * name); 
    void displayMember(); 
    private: 
    Members libMembers; 

}; 

MembersOfLibrary::MembersOfLibrary() { 

    fstream memberData; 
    memberData.open("member.txt", ios::in|ios::out); 
    if(!memberData) { 
    cout<<"\nNot able to create a file. MAJOR OS ERROR!! \n"; 
    } 
    memberData.close(); 
} 

Tôi m không thể hiểu được ý nghĩa của -> ios :: in | ios :: ra < - Vui lòng trợ giúp! cảm ơn

+0

Có giao diện [tại đây] (http://www.cplusplus.com/reference/ios/ios_base/openmode/). – emlai

Trả lời

6
  • ios::in cho phép nhập (hoạt động đọc) từ luồng.
  • ios::out cho phép đầu ra (ghi hoạt động) vào luồng.
  • | (bitwise OR) được sử dụng để kết hợp hai ios cờ,
    nghĩa là đi qua ios::in | ios::out để các nhà xây dựng
    của std::fstream phép cả đầu vào và đầu ra cho các dòng.

Những điều quan trọng cần lưu ý:

  • std::ifstream tự động có bộ ios::in cờ.
  • std::ofstream tự động có bộ cờ ios::out.
  • std::fstream có không ios::in hoặc ios::out tự động
    bộ. Đó là lý do tại sao chúng được đặt rõ ràng trong mã ví dụ của bạn.
+0

Tại sao chúng ta cần bitwise OR, chỉ là một toán tử OR hợp lý không thể được sử dụng ở đây? –

+1

Hợp lý và bitwise HOẶC là hai điều hoàn toàn khác nhau. Một logic HOẶC chỉ giao dịch với các giá trị 'bool'. Ví dụ, nó chỉ đánh giá biểu thức thứ hai nếu biểu thức đầu tiên được đánh giá là 'false'. – emlai

+0

Trong khi bit OR (giao dịch với giá trị số nguyên) đi qua cả hai giá trị theo bit và đặt bit trong giá trị kết quả nếu bit được đặt ở một trong hai giá trị đầu vào, do đó dẫn đến hiệu ứng kết hợp. – emlai

2
memberData.open("member.txt", ios::in|ios::out); 

ios :: in được sử dụng khi bạn muốn đọc từ một tập tin

ios :: ra được sử dụng khi bạn muốn viết vào một tập tin

ios :: in | ios :: ra có nghĩa là ios :: nhập hoặc ios :: ra, có nghĩa là bất cứ yêu cầu được sử dụng

Dưới đây là một liên kết hữu ích

http://www.cplusplus.com/doc/tutorial/files/

3

ios::inios::outopenmode flags và trong trường hợp của bạn được kết hợp với thao tác nhị phân hoặc (|). Do đó, tệp được mở để đọc và viết.

Các vấn đề liên quan