flags.cpp

来自「Thinking in C++ 2nd edition source code 」· C++ 代码 · 共 54 行

CPP
54
字号
//: C07:Flags.cpp
// From Thinking in C++, 2nd Edition
// at http://www.BruceEckel.com
// (c) Bruce Eckel 1999
// Copyright notice in Copyright.txt
// List of true/false flags
#include <cstdio>
#include <cstring>
#include "../require.h"
using namespace std;

#define FSIZE 100
#define TRUE 1
#define FALSE 0

class Flags {
  unsigned char f[FSIZE];
public:
  Flags();
  void set(int i);
  void clear(int i);
  int read(int i);
  int size();
};

Flags::Flags() {
  memset(f, FALSE, FSIZE);
}

void Flags::set(int i) {
  require(i >= 0 && i < FSIZE);
  f[i] = TRUE;
}

void Flags::clear(int i) {
  require(i >= 0 && i < FSIZE);
  f[i] = FALSE;
}

int Flags::read(int i) {
  require(i >= 0 && i < FSIZE);
  return f[i];
}

int Flags::size() { return FSIZE; }

int main() {
  Flags fl;
  for(int i = 0; i < fl.size(); i++)
    if(i % 3 == 0) fl.set(i);
  for(int j = 0; j < fl.size(); j++)
    printf("fl.read(%d)= %d\n", j, fl.read(j));
} ///:~

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?