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

Pra*_*rma 13 c++ file-handling

我正在阅读一些项目代码,我发现了这里,这里的MembersOfLibrary()是类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();
}
Run Code Online (Sandbox Code Playgroud)

我无法理解 - > ios :: in | ios :: out < - 请帮帮忙!谢谢

eml*_*lai 14

  • ios::in 允许从流中输入(读取操作).
  • ios::out 允许输出(写操作)到流.
  • |(位或运算符)被用来在两个结合ios的标志,
    这意味着传递ios::in | ios::out给构造
    std::fstream能够用于流输入和输出.

需要注意的重要事项:

  • std::ifstream自动ios::in设置标志.
  • std::ofstream自动ios::out设置标志.
  • std::fstream没有ios::inios::out自动
    设置.这就是为什么它们在您的示例代码中明确设置的原因.

  • 逻辑和按位OR是两个完全不同的东西.逻辑OR仅处理`bool`值.例如,仅当第一个表达式求值为"false"时,它才会计算第二个表达式. (3认同)

Aru*_*A S 5

 memberData.open("member.txt", ios::in|ios::out);
Run Code Online (Sandbox Code Playgroud)

ios::in 用于读取文件

ios::out 用于写入文件

ios::in|ios::out 表示 ios::in 或 ios::out,以需要的为准

这是一个有用的链接

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


πάν*_*ῥεῖ 5

ios::inios::outopenmode flags,在您的情况下与二进制( |) 操作相结合。因此文件被打开用于读取和写入。