C++ Bit Format Flags

Advertisements
Advertisements

The C++ bit format flags changes the characteristics of IO \hspace{3px} stream .The flags hold the current setting for the IO \hspace{3px} stream. We can turn the flags on or off using built-in function such as setf() or unsetf(). Changing the behavior of the cout object is useful in displaying output only after bit level manipulation.

Here is the list of flags available in C++ .

Flag NameDescription
skipwsskip whitespace while input
rightleft justify the output
internalpad after sign or base
decdecimal base
hexhexadecimal base
octoctal base
showbasedisplay base for hex and oct
showpointshows all decimal point for float
uppercaseshows hex in uppercase
showposdisplay a + sign for positive numbers
scientificdisplay float numbers with E
fixedfloating point notation
unitbufflush all streams after cin
stdioflush stdout,stderr after cin

setf() function

The setf() function sets the bit format flags. It takes the flag name as the argument. The syntax to use this function is given below.

setf(ios::<flag_name>);

You can use bitwise or operator to set more than one field.

setf(ios::<field1>| ios::<field2> | ios::<field3>);

unsetf() function

The unsetf() function unsets the bit format flag for cout object. The general syntax to use this function is given below.

Advertisements
unsetf(ios::<flag_name>);

Example #1 : skipws

//using skipws function
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    //Variable declaration
    
    char animal_name[100];
       
    //Reading values
    
    cout << "Enter an animal name:";
    cin >> skipws;
    cin >> animal_name;
    
    //printing output 
    
    cout << "Number = " << animal_name << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Output:

Enter an animal name:bengal tiger
Number = bengal

Example #2 : right, left, internal and adjustfield

/* Demo of adjustfield, left,right and internal bit format */
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    //variable declaration
    int number1, number2, number3;
    
    //variable initialization
    
    number1 = 100;
    number2 = 230;
    number3 = 436;
    
    //using adjustfield and other bit formats
    
    cout.setf(ios::showpos);
    cout.setf(ios::left,ios::adjustfield);
    cout.width(10);
    cout << number1 << endl;
    
    cout.setf(ios::right,ios::adjustfield);
    cout.width(10);
    cout << number2 << endl;
    
    cout.setf(ios::internal,ios::adjustfield);
    cout.width(10);
    cout << number3 << endl;
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Output:

+100
      +230
+      436 

Example #3 : dec, hex, oct, and showbase

#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
    //Variable declaration
    
    int amount;
    
    //Variable initialization
    
    amount = 564;
    
    //Converting base using showbase, hex, oct and dec
    
    cout.setf(ios::showbase);
    cout.setf(ios::hex,ios::basefield);
    cout << "Hexadecimal =" << amount << endl;
    
    cout.setf(ios::oct,ios::basefield);
    cout << "Octal =" << amount << endl;
    
    cout.setf(ios::dec,ios::basefield);
    cout << "Decimal =" << amount << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Output:

Hexadecimal =0x234
Octal =01064
Decimal =564

Example #4 : scientific, fixed, showpoint and floatfield

/* Demo of all floating point format flags - 
floatpoint, showpoint, scientific, fixed 
*/
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{ 
    //variable declaration
    
    float pi;
    float radius;
    float area;
    
    //variable initializtiom
    
    pi = 3.14159;
    radius = 2.23;
    area = 0.0;
    
    area = pi * (radius * radius);
    
    // printing result using bit format flags
   
    cout.setf(ios::showpoint);
    cout.precision(3);
    cout.setf(ios::scientific,ios::floatfield);
    cout << "Pi=" << pi << endl;
    cout << "Radius=" << radius << endl;
    cout << "Area=" << area << endl;
    
    cout << endl;
    cout << endl;
    cout.setf(ios::fixed,ios::floatfield);
    cout << "Pi(fixed)=" << pi << endl;
    cout << "Radius(fixed)=" << radius << endl;
    cout << "Area(fixed)=" << area << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Output:

Pi=3.142e+000
Radius=2.230e+000
Area=1.562e+001
Pi(fixed)=3.142
Radius(fixed)=2.230
Area(fixed)=15.623

Bestseller

Object-Oriented Programming with C++ – 8th Edition

Object-oriented programming with C++, 8th edition is here with some valuable updates. The new edition helps students to assess their learning by answering questions based on learning outcomes. Objective-type questions and dry-run questions are introduced to make students exam ready. A new appendix on interview questions is for those seeking to join the industry. The book is designed for students studying at the undergraduate level. It provides all-inclusive concepts and programs on object-oriented programming with C++ as an implementation language.

  • 150+ multi-choice questions
  • 100+ dry-run exercises
  • 90+ interview questions
  • Two new projects and more
Advertisements
Advertisements
Advertisements