2015-02-05 22 views
6

czytałem jakiś kod projektu i znalazłem to tutaj MembersOfLibrary() jest konstruktor klasy MenberOfLibraryCo to jest ios :: in | ios :: out?

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(); 
} 

ja nie jestem w stanie zrozumieć sens -> ios :: w | ios :: out < - Proszę pomóc! Dziękuję

+0

Zobacz [tutaj] (http://www.cplusplus.com/reference/ios/ios_base/openmode/). – emlai

Odpowiedz

6
  • umożliwia wprowadzanie (operacje odczytu) ze strumienia.
  • ios::out pozwala na wyjście (operacje zapisu) do strumienia.
  • | (bitowe LUB Operator) jest stosowany do łączenia dwóch ios flagi
    oznacza przechodzące ios::in | ios::out konstruktora
    z std::fstream umożliwia zarówno wejście i wyjście dla strumienia.

Ważne rzeczy do uwaga:

  • std::ifstream automatycznie ma zestaw ios::in flagi.
  • std::ofstream automatycznie ustawiono flagę ios::out.
  • std::fstream nie ma automatycznie ustawionego zestawu ios::in lub ios::out . Właśnie dlatego są one wyraźnie ustawione w twoim przykładowym kodzie.
+0

Dlaczego potrzebujemy bitowego LUB, wystarczy użyć logicznego operatora OR? –

+1

Logiczna i bitowa OR to dwie zupełnie różne rzeczy. Logiczne OR zajmuje się tylko wartościami 'bool'. Na przykład ocenia drugie wyrażenie tylko wtedy, gdy pierwsze wyrażenie zostało ocenione jako "fałsz". – emlai

+0

Podczas gdy bitowe OR (które traktuje o wartościach całkowitych) przechodzi przez obie wartości bit po bicie i ustawia bit w wynikowej wartości, jeśli bit został ustawiony w którejkolwiek z dwóch wartości wejściowych, co skutkuje efektem łączenia. – emlai

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

ios :: w jest używany, gdy chcemy odczytać z pliku

ios :: out jest używany, gdy chcemy zapisać do pliku

ios :: w | ios :: out oznacza ios :: w lub iOS :: out, czyli cokolwiek jest wymagane służy

Oto przydatny związek

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

3

ios::in i ios::outopenmode flags, w danym przypadku w połączeniu z podwójną lub (|) operacji. W ten sposób plik jest otwierany do odczytu i zapisu.

Powiązane problemy