How to read/write continuous hex dump using STL
Hello all,
The program below has a bug... The program is supposed to convert a
string to a continuous hex dump and back to a string. The output
should be as follows:
abcd
61626364
abcd
But the output I see is as follows:
abcd
61626364
dddd
Can someone please show me what I'm doing wrong and what is the proper
way of reading a continuous hex dump using the STL?
// BEGIN SAMPLE PROGRAM
#include <iostream> // For std::cout
#include <string> // For std::string
#include <sstream> // For std::ostringstream
#include <iomanip> // For std::setfill
int
main()
{
// Set "input"
//
std::string input = "abcd";
std::cout << input << std::endl;
// Set "hexDump"
//
std::ostringstream oss;
oss << std::hex << std::setfill('0');
for(int i = 0; i < input.length(); i++)
{
int temp = input[i];
oss << std::setw(2) << temp;
}
std::string hexDump = oss.str();
assert(hexDump.length() == 2 * input.length());
std::cout << hexDump << std::endl;
// Set "output"
//
std::string output;
int numChars = hexDump.length() / 2;
output.resize(numChars);
std::istringstream iss(hexDump);
iss >> std::hex;
for(int i = 0; i < numChars; i++)
{
int temp;
iss >> std::setw(2) >> temp; // BUG: Using setw DOES NOT WORK!!!
output[i] = temp;
}
std::cout << output << std::endl;
}
// END SAMPLE PROGRAM