2015-02-05 2 views
6

내가 몇 가지 프로젝트 코드를 읽고 있던 나는이 발견, 여기 MembersOfLibrary()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(); 
} 

내가의 의미를 이해 할 수없는 해요 MenberOfLibrary 클래스의 생성자 -> IOS ::에서 | IOS :: out < - 도와주세요! 당신에게

+0

보세요 [여기] (http://www.cplusplus.com/reference/ios/ios_base/openmode/). – emlai

답변

6
  • ios::in은 스트림으로부터의 입력 (판독 동작)을 허용한다.
  • ios::out은 스트림에 출력 (쓰기 연산)을 허용합니다.
  • | (비트 OR 연산자)
    생성자의 std::fstreamios::in | ios::out
    에 통과하면 스트림 입력과 출력을 모두를 가능하게한다는 것을 의미 두 ios 플래그를 결합하는데 사용된다.

중요 사항 참고 사항 :

  • std::ifstream 자동으로 ios::in 플래그 세트가 있습니다.
  • std::ofstream에는 자동으로 ios::out 플래그가 설정되어 있습니다.
  • ios::in 또는 ios::out이 자동으로
    이 아닙니다. 이것이 예제 코드에 명시 적으로 설정되어있는 이유입니다.
+0

왜 우리가 비트 OR이 필요한가요, 단지 논리 OR 연산자는 여기에서 사용할 수 없습니까? –

+1

논리와 비트 OR은 완전히 다른 두 가지입니다. 논리 OR은 'bool'값만 처리합니다. 예를 들어 첫 번째 표현식이 'false'로 평가 된 경우에만 두 번째 표현식을 평가합니다. – emlai

+0

반면 비트가 두 개의 입력 값 중 하나에 설정되면 결과 값에 비트를 설정하므로 결합 효과가 발생합니다 (정수 값을 처리하는 비트 OR). – emlai

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

IOS 감사 :: 당신이 파일에서

IOS를 읽고 싶은 경우에 사용한다 :: 파일로

IOS를 작성하고자 할 때 출력을 사용 ::에 | IOS :: 밖으로 그

여기에 유용한 링크의

를 사용하는 필요 중입니다에서 IOS :: 또는 iOS :: 아웃 의미

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

3

ios::inios::outopenmode flags, 그리고 귀하의 경우 바이너리 또는 (|) 작업과 함께. 따라서 파일은 읽기 및 쓰기 용으로 열립니다.