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