什么是 ios::in|ios::out?

What is ios::in|ios::out?

我在阅读一些项目代码时发现了这个,这里 MembersOfLibrary()class MenberOfLibrary

的构造函数
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();
}

什么是 ios::in|ios::out

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

ios::in 用于读取文件

ios::out 用于写入文件

ios::in|ios::out表示ios::in或ios::out,即按需使用

这是一个有用的link

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

ios::inios::outopenmode flags,在您的情况下结合二进制 (|) 操作.这样文件就可以读写打开了。

  • ios::in 允许从流中输入(读取操作)。
  • ios::out 允许输出(写入操作)到流。
  • |(按位或运算符)用于组合两个ios标志,
    这意味着将 ios::in | ios::out 传递给构造函数
    std::fstream 为流启用 输入和输出。

重要注意事项:

  • std::ifstream 自动设置了 ios::in 标志。
  • std::ofstream 自动设置了 ios::out 标志。
  • std::fstream 既没有 ios::in 也没有 ios::out 自动
    放。这就是在您的示例代码中明确设置它们的原因。