Prikaz jedne poruke
Stara 11.2.2012, 11:24   #15
M.Silenus
Veteran
 
Član od: 27.12.2005.
Lokacija: Vremenske Grobnice, Hiperion
Poruke: 680
Zahvalnice: 99
Zahvaljeno 124 puta na 82 poruka
Određen forumom Re: How to... C++

Standardna biblioteka ima bitset, koja bi mogla da ti koristi.

Primer:

Kod:
#include <iostream>
#include <bitset>

enum { Flag1 = 0, Flag2, Flag3, Flag4 };

typedef std::bitset<4> Flags;


std::string printbool( bool value )
{
  return (value ? "true" : "false");
}

std::ostream& operator << ( std::ostream& str, Flags const& value )
{
  str << "Flags {" << std::endl;
  str << "\tFlag1 = " << printbool(value[Flag1]) << std::endl;
  str << "\tFlag2 = " << printbool(value[Flag2]) << std::endl;
  str << "\tFlag3 = " << printbool(value[Flag3]) << std::endl;
  str << "\tFlag4 = " << printbool(value[Flag4]) << std::endl;
  str << "}" << std::endl;

  return str;
}

int main()
{
  Flags flags;

  flags.set(Flag1, true);
  flags.set(Flag2, false);
  flags.set(Flag3, true);
  flags.set(Flag4, false);
  
  std::cout << flags << std::endl;

  flags = Flags(std::string("1011"));

  std::cout << flags << std::endl;

  flags = Flags(0x3); // 0011

  std::cout << flags << std::endl;

  return 0;
}
Izlaz progama je:
Kod:
Flags {
  Flag1 = true
  Flag2 = false
  Flag3 = true
  Flag4 = false
}

Flags {
  Flag1 = true
  Flag2 = true
  Flag3 = false
  Flag4 = true
}

Flags {
  Flag1 = true
  Flag2 = true
  Flag3 = false
  Flag4 = false
}
Uzmi u obzir da broj dozvoljenih flegova moraš da znaš u vreme kompajliranja. Ako ti treba promenljivi broj flegova, razmotri boost::dynamic_bit_set
M.Silenus je offline   Odgovor sa citatom ove poruke