C++ IOS::swap() function



The C++ std::ios::swap() function is used to swap the state of two ios objects, exchanging their internal states, such as formatting flags, buffer pointers, and other attributes.

std::ios::swap() function is employed to maintain stream consistency or optimize performance in input/output operations.

Syntax

Following is the syntax for std::ios::swap() function.

void swap (ios& x) noexcept;

Parameters

  • x − It indicates the another stream object of the same type.

Return Value

This function does not return anything

Exceptions

This member function never throws exceptions.

Data races

Modifies both stream objects (*this and x).

Example

Let's look at the following example, where we are going to swap state flags between stream buffers.

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream x("112");
    std::istringstream y("ABC");
    int z;
    y >> z;
    std::ios::iostate a = x.rdstate();
    std::ios::iostate b = y.rdstate();
    std::cout << "Before Swapping :" << std::endl;
    std::cout << "x state: " << a << std::endl;
    std::cout << "y state: " << b << std::endl;
    x.swap(y);
    a = x.rdstate();
    b = y.rdstate();
    std::cout << "After Swapping :" << std::endl;
    std::cout << "x state: " << a << std::endl;
    std::cout << "y state: " << b << std::endl;
    return 0;
}

Output

Output of the above code is as follows −

Before Swapping :
x state: 0
y state: 4
After Swapping :
x state: 4
y state: 0

Example

Consider the following example, where we are going to swap the buffers of two std::stringstream objects

#include <iostream>
#include <sstream>
int main()
{
    std::stringstream x1, x2;
    x1 << "TutorialsPoint";
    x2 << "TP";
    std::cout << "Before swapping:\n";
    std::cout << "x1 : " << x1.str() << '\n';
    std::cout << "x2 : " << x2.str() << '\n';
    x1.swap(x2);
    std::cout << "After swapping:\n";
    std::cout << "x1 : " << x1.str() << '\n';
    std::cout << "x2 : " << x2.str() << '\n';
    return 0;
}

Output

Following is the output of the above code −

Before swapping:
x1 : TutorialsPoint
x2 : TP
After swapping:
x1 : TP
x2 : TutorialsPoint
ios.htm