# StringStream in C++ for Decimal to Hexadecimal and back

• Difficulty Level : Expert
• Last Updated : 14 Feb, 2023

Stringstream is stream class present in C++ which is used for doing operations on a string. It can be used for formatting/parsing/converting a string to number/char etc. Hex is an I/O manipulator that takes reference to an I/O stream as parameter and returns reference to the stream after manipulation. Here is a quick way to convert any decimal to hexadecimal using stringstream:

## CPP

 `// CPP program to convert integer to``// hexadecimal using stringstream and``// hex I/O manipulator.``#include ``using` `namespace` `std;` `int` `main()``{``    ``int` `i = 942;``    ``stringstream ss;``    ``ss << hex << i;``    ``string res = ss.str();``    ``cout << "0x" << res << endl; ``// this will print 0x3ae``    ``return` `0;``}`

Output:

`0x3ae`

The time complexity of this program is O(1) as it only performs a single operation.

The space complexity is also O(1) as no additional space is used.

If we want to change hexadecimal string back to decimal you can do it by following way:

## CPP

 `// CPP program to convert hexadecimal to``// integer using stringstream and``// hex I/O manipulator.``#include ``using` `namespace` `std;` `int` `main()``{``    ``string hexStr = "0x3ae";``    ``unsigned ``int` `x;``    ``stringstream ss;``    ``ss << std::hex << hexStr;``    ``ss >> x;``    ``cout << x << endl; ``// this will print 942``    ``return` `0;``}`

Output:

`942`

Time Complexity: The time complexity of the above algorithm is O(1), as we are only performing a few operations.

Space Complexity: The space complexity of the above algorithm is O(1), as we are only using a few variables.

My Personal Notes arrow_drop_up